javascript - 使用 document.cookie 存储的 cookie 是否特定于文档?

标签 javascript asp.net scope cookies

我正在使用 JavaScript 处理 cookie,以便在我的 asp.net Web 应用程序中存储一些值。 我使用 document.cookie 来保存一些值(转换为长字符串)。但我希望该值可以在我的应用程序中的所有页面上访问。

当我尝试从不同页面获取该值时,我会获取与当前 URL 中的文档相关的值。

简而言之,我将 cookie 中的值保存在 http://myapp/doc1.aspx 中,并希望在 http://myapp/doc2.aspx 中检索它>

那么 document.cookie 是否属于单个文档范围?我如何在整个网站上保存/读取 cookie?

更新

这就是我获取和设置cookie的方式

function getCookie(c_name)
{
try{
  if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  }
  catch(e)
  {}
return "";
}

function setCookie ( name, value, exp_d) 
{
  var cookie_string = name + "=" + escape ( value );

  if ( exp_d )
  {
    var exdate=new Date();
    var expires = new Date ( exdate.getYear(), exdate.getMonth(), exdate.getDay()+exp_d );
    cookie_string += "; expires=" + expires.toGMTString();
  }

  document.cookie = cookie_string;
}

但是我在不同页面中得到不同的 cookie 值。有什么想法吗?

谢谢。

最佳答案

Cookie 有一个域和一个路径。默认情况下,域将是设置它的域,路径将是根路径,但可以按如下方式覆盖这些:

资源位于http://www.example.net/foo/bar/baz设置 cookie(无论是来自服务器还是客户端 javascript)。

默认情况下,其域名为 www.example.net,路径为/,因此对于 URI 匹配 ://www.example.net/ 的所有资源都可见,其中 * 是一个简单的通配符。

它的域可以设置为 example.net,但不能设置为 example.org - 它只能设置为其子域的域。 (有一些特殊且不完善的规则可以阻止您为 .net 等顶级域名设置 cookie)

它的路径可以设置为/foo/bar/baz或/foo/bar甚至/foo/ba,因为它与简单的子字符串匹配进行比较。如果设置为例如/foo/bar/那么它将对 http://www.example.net/foo/bar/qux 处的资源可见但没有 http://www.example.net/foo/quux/corge

还有安全属性,它将 cookie 限制为 HTTPS 协议(protocol)。


编辑:参见http://www.quirksmode.org/js/cookies.html有关如何实际设置这些属性的详细信息。

关于javascript - 使用 document.cookie 存储的 cookie 是否特定于文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3502384/

相关文章:

c# - 如果我不打算重用代码,我应该使用用户控件吗?

c# - 如果条件为真,代码不返回

Python 两个函数的变量作用域

python - `for` 中的类变量 .. .`if` 表达式在 python 中失败

javascript - React.JS 的 Superagent 响应范围问题

javascript - 幻灯片的三个垂直点

javascript - 如何暂停和恢复计时器?

javascript - 获取 javascript 渲染页面的 html(与它交互后)

javascript - 转译器和编译器

.net - NHibernate 和多个数据库后端 - 架构