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



我想使用带有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。以下是W3Schools的javascript cookie教程。

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

洞穴

如果你的选项卡将你带到不同的路径,那么这是有效的。但如果你只使用散列,那么它就不起作用,因为散列不是路径的一部分。您可以在document.location中看到这一点。您必须跨标签页共享cookie,并自己解析这些值。

相关内容

  • 没有找到相关文章

最新更新