【问题标题】:Are cookies stored using document.cookie specific to a document?cookie 是否使用特定于文档的 document.cookie 存储?
【发布时间】:2011-03-30 23:09:26
【问题描述】:

我正在使用 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 值。有什么想法吗?

谢谢。

【问题讨论】:

  • 我在这里没有发现任何问题。您是否尝试过创建 javascript:alert(document.cookie) 的快捷方式以在不同点检查它,并在 firebug 或类似内容中设置断点以确保在设置之前没有编写它?
  • 是的,我正在按照你说的做。

标签: javascript asp.net scope cookies


【解决方案1】:

这个问题可以通过下面的语法来解决

use ";path=/;" 最后同时保存cookies如下图

document.cookie = c_name + "=" + oldInfo + ";path=/";

【讨论】:

    【解决方案2】:

    Cookies 适用于整个域名。使用您发布的代码创建的 cookie 将可用于您域名上托管的任何页面。

    【讨论】:

      【解决方案3】:

      Cookie 具有域和路径。默认情况下,域将是它设置的域,路径将是根路径,但这些可以被覆盖,如下所示:

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

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

      它的域可以设置为 example.net,但不能设置为 example.org - 它只能设置为它是子域的域。 (有一些特殊且不完善的规则可以阻止您为 .net 之类的 tld 设置 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 协议。


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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多