0

我想使用带有 c# 的 asp.net 为同一浏览器中的不同选项卡创建和维护不同的 cookie。我想创建只有一个选项卡可以访问的 cookie。如果使用另一个选项卡发出另一个请求,那么它将被视为对该选项卡的新请求并为该新选项卡创建 cookie。

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

4

2 回答 2

1

我认为您不能告诉浏览器“仅在此选项卡中读取此页面的此 cookie ”,以及“仅在此其他选项卡中读取同一页面的其他 cookie ”。您可能必须读取页面的每个实例(即每个不同的选项卡)的所有cookie,然后在 cookie 本身中使用某种标识符来决定在特定情况下使用哪个标识符。

一个总体思路:

如果您可以向 cookie 添加易于阅读的“键”,那么您可以遍历所有这些,并且仅使用 cookie 中的值与页面中的键匹配的键。

页面中的密钥可以由服务器为每个新请求生成。您可以将其存储在“隐藏”类型的输入字段中(或者可能存储在视图状态存储中?)。

于 2013-06-27T06:26:34.333 回答
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这是javascript cookie 的 W3Schools 教程。

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

警告

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

于 2017-03-06T21:19:42.623 回答