在同一浏览器中为不同的选项卡创建和维护不同的cookie

时间:2013-06-27 05:48:09

标签: c# asp.net cookies browser-tab

我想使用带有c#的asp.net在同一浏览器中为不同的选项卡创建和维护不同的cookie。我想创建只能由一个选项卡访问的cookie。如果使用其他选项卡发出另一个请求,则会将其视为该选项卡的新请求,并为该新选项卡创建Cookie。

所以我想在同一个浏览器中为所有标签添加唯一的cookie。我怎么能用C#代码做到这一点?

2 个答案:

答案 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=blah2Here's W3Schools javascript cookies教程。

如果您想要包含从C#传递的信息,只需将其添加到隐藏字段中,然后使用javascript从中获取。

<强>买者

如果你的标签带你到不同的路径,那么这是有效的。但是如果你只使用哈希那么它就不会起作用,因为哈希不是路径的一部分。您可以使用document.location查看此信息。您必须在标签之间共享Cookie并自行解析这些值。