【发布时间】:2010-10-31 01:25:04
【问题描述】:
我当前的文档 URL 是 http://127.0.0.1/foo,我需要更改 http://127.0.0.1/bar 的 cookie 值。 document.cookie 是空的,因为文档的 URL 是 foo。 目前,我只想读取 cookie 值。 有什么线索吗?
【问题讨论】:
标签: javascript path dns cookies
我当前的文档 URL 是 http://127.0.0.1/foo,我需要更改 http://127.0.0.1/bar 的 cookie 值。 document.cookie 是空的,因为文档的 URL 是 foo。 目前,我只想读取 cookie 值。 有什么线索吗?
【问题讨论】:
标签: javascript path dns cookies
当您创建 cookie 时,如果您将路径设置为“/”而不是“foo”,您将能够在域中的任何位置读取它,包括“/foo”、“/bar”等。
【讨论】:
您可以创建一个<iframe> 指向/bar 内的资源,并将跨框架脚本插入其中。例如:
<iframe src="/bar/blank.html" id="barframe"></iframe>
var barframe= document.getElementById('barframe');
var bardocument= 'contentDocument' in barframe? barframe.contentDocument : barframe.contentWindow.document; // IE compat
alert(bardocument.cookie);
Cookie path= 是一种防止意外 cookie 名称冲突的便利措施。鉴于不同的路径共享一个 JavaScript 源,它不是一种有效的安全机制。
【讨论】:
您不能从不同的路径访问 cookie - 否则将是一个安全漏洞。
我能想到的唯一方法是让/bar 设置一个其path=/ 的cookie,以便/(包括/foo)中的所有页面都可以访问它。
【讨论】:
正如 JJ 和 grawity 所提到的,您无法从您的页面执行此操作。不过,你有一个变通办法。
我。放置一个指向http://localhost/bar 的 iframe。在存储 cookie 值的“栏”页面上有一个隐藏元素。 (让这个 iframe 为 1*1 大小,所以它不可见)。
二。在“foo”页面上使用 JavaScript 来获取 cookie 值。
也可以使用类似的方法(经过修改)来写入 cookie 值!
谢谢,
拉姆吉。
【讨论】: