在JavaScript和服务器中读取第三方Cookie

4
如果一个域名foo.com有一个名为bar=1的cookie,那么当该域名被作为第一方访问时,cookie就会被放置。 (因此,假设cookie已经存在,不是会话cookie,不是http-only,在根目录下"/"下的cookie。这个问题不是关于写入cookie的,而是关于读取。)
另外,浏览器禁用了第三方cookie,没有其他插件,只有一个干净的安装了禁用第三方cookie的浏览器。在foo.com上也没有P3P头。
在以上条件下,我的问题是:
当页面foo.com/somepage.html被放置在不同域名(第三方)下的iframe中时
  1. 当读取页面时,浏览器是否会将cookie bar=1发送到服务器?
  2. 页面中的JavaScript能否读取cookie bar=1
  3. 我是否应该期望以上两种情况的浏览器差异?
额外问题

我不需要答案,因为我不使用这种情况,但我很好奇。

在以上情况下,如果可以读取(并且旧cookie仍然存在,只需要更新而不是新写入),浏览器是否会更新cookie(类似于写入)?


但是该页面已经被放置在一个不同域名上的iFrame中,这对我来说是第三方cookie。 - Eric Yin
1
啊,我明白了 - 对不起,是我的错误。 - cloudfeet
1个回答

2

1.) 当浏览器读取页面时,它会向服务器发送 cookie bar=1 吗?

是的。

2.) 页面中的 JavaScript 能否读取 cookie bar=1?

这将取决于是否为会话 cookie(使用 HttpOnly 标志创建)。如果是会话 cookie,则无法从 JavaScript 中读取它。但是它将被发送到服务器上的 foo.com,服务器端脚本将能够读取它。

3.) 在上述两种情况下,我是否应该期望任何浏览器差异?

不会。

当然,以上所有内容均适用于 iframe 内的 foo.com 域。包含 HTML 页面和服务器无法访问此 cookie。


谢谢。能够正常工作的浏览器包括IE6吗?顺便说一下,我更新了我的问题并提出了一个额外的问题,我预计答案是否定的。 - Eric Yin
IE6!哇!我猜答案是肯定的,但说实话,我不太确定。我几乎不能将IE6视为浏览器。如果你需要支持它,我建议你测试一下场景。至于你的额外问题,我必须承认我没理解它。 - Darin Dimitrov
我想在IE6上尝试,但找不到它:(这些天我甚至不知道如何获取IE6,但是作为支持它的人,实际上并不是真的,只是得考虑一下。就忘记额外的问题吧,答案肯定是否定的。 - Eric Yin
www.browserstack.com 可以让您在 IE6 上进行测试。 - Barmar
经过一些测试,我认为1)应该是不行的。第一方设置的cookie在充当第三方时不会发送到服务器,但页面上的js可以读取它。 - Eric Yin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接