我想使用带有 c# 的 asp.net 为同一浏览器中的不同选项卡创建和维护不同的 cookie。我想创建只有一个选项卡可以访问的 cookie。如果使用另一个选项卡发出另一个请求,那么它将被视为对该选项卡的新请求并为该新选项卡创建 cookie。
所以我想要同一浏览器中所有标签的唯一cookie。我怎么能用 C# 代码做到这一点?
我想使用带有 c# 的 asp.net 为同一浏览器中的不同选项卡创建和维护不同的 cookie。我想创建只有一个选项卡可以访问的 cookie。如果使用另一个选项卡发出另一个请求,那么它将被视为对该选项卡的新请求并为该新选项卡创建 cookie。
所以我想要同一浏览器中所有标签的唯一cookie。我怎么能用 C# 代码做到这一点?
我认为您不能告诉浏览器“仅在此选项卡中读取此页面的此 cookie ”,以及“仅在此其他选项卡中读取同一页面的其他 cookie ”。您可能必须读取页面的每个实例(即每个不同的选项卡)的所有cookie,然后在 cookie 本身中使用某种标识符来决定在特定情况下使用哪个标识符。
一个总体思路:
如果您可以向 cookie 添加易于阅读的“键”,那么您可以遍历所有这些,并且仅使用 cookie 中的值与页面中的键匹配的键。
页面中的密钥可以由服务器为每个新请求生成。您可以将其存储在“隐藏”类型的输入字段中(或者可能存储在视图状态存储中?)。
在 javascript 中,只有当您在该路径上时,您才能按路径设置 cookie,如下所示:
如果你在,www.yourwebsite.com/firstTab
你可以设置这个 cookie:
document.cookie = "myField=blah;expires=10/10/2020;path=/firstTab";
如果你在,www.yourwebsite.com/secondTab
你可以设置这个 cookie:
document.cookie = "myField=blah2;expires=10/10/2020;path=/secondTab";
如果你/firstTab
去做document.cookie
,你只会看到myField=blah
,如果你做同样的事情,/secondTab
你只会看到myField=blah2
。这是javascript cookie 的 W3Schools 教程。
如果您想包含从 C# 传递的信息,只需将其添加到隐藏字段并使用 javascript 从那里获取。
警告
如果您的选项卡将您带到不同的路径,那么这很有效。但是,如果您只使用散列,那么它将不起作用,因为散列不是路径的一部分。你可以看到这个document.location
。您必须跨选项卡共享 cookie 并自己解析值。