我想使用带有c#的asp.net在同一浏览器中为不同的选项卡创建和维护不同的cookie。我想创建只能由一个选项卡访问的cookie。如果使用其他选项卡发出另一个请求,则会将其视为该选项卡的新请求,并为该新选项卡创建Cookie。
所以我想在同一个浏览器中为所有标签添加唯一的cookie。我怎么能用C#代码做到这一点?
答案 0 :(得分:1)
我认为您不能告诉浏览器“仅在此选项卡中为此页面读取此cookie ”,并且“仅读取该页面中同一页面的其他Cookie其他标签“。您可能必须为每个页面实例(即每个不同的选项卡)读取所有 cookie,然后在cookie本身中使用某种标识符来决定在特定情况下使用哪个
一般概念:
如果您可以为cookie添加一个易于阅读的“密钥”,那么您可以遍历所有这些密钥,并且只使用cookie中的值和一个与页面中的键匹配的键。
服务器可以为每个新请求生成页面中的密钥。您可以将其存储在input field of type "hidden"(或者在视图状态存储中?)。
答案 1 :(得分:1)
在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
。 Here's W3Schools javascript cookies教程。
如果您想要包含从C#传递的信息,只需将其添加到隐藏字段中,然后使用javascript从中获取。
<强>买者强>
如果你的标签带你到不同的路径,那么这是有效的。但是如果你只使用哈希那么它就不会起作用,因为哈希不是路径的一部分。您可以使用document.location
查看此信息。您必须在标签之间共享Cookie并自行解析这些值。