如果我有一个站点(例如 foo.com)并且在 foo.com 的主页上,有一个图像请求,其中 src=bar.com...,将 bar.com 域上的 cookie 发送到bar.com 服务器?
6 回答
是的。HTTP 不区分一种资源或另一种资源(图像与 html)。
cookie 通常包含在任何类型的请求中,但您描述的场景是所谓的第三方 cookie(即,cookie 设置在与加载页面的域不同的域上)并且大多数浏览器提供隐私设置来阻止第三方 cookie。
第三方 cookie 允许 bar.com 的所有者在 foo.com 上放置图像(例如横幅广告)并跟踪 foo.com 的用户,即使这些用户从未访问过 bar.com。这是一个隐私问题,许多用户选择阻止此类 cookie。
如果用户未阻止第三方 cookie,则大多数现代浏览器将在向第三方网站发出请求时设置或发送第三方域的 cookie。IE 6 有一种不同的阻塞机制,称为 leashing。wiki:一个 leashed cookie 是一种第三方 cookie,仅在通过相同的第一方访问第三方文档时由浏览器发送。
这个问题很老,但对我来说是谷歌上的第一个结果,所以我认为有必要澄清一下现在(2021 年)它是如何工作的。
当 bar.com 设置 cookie 时,他们可以指定一个SameSite
属性。
如果 cookie 设置为SameSite=Lax(或未指定 SameSite 属性),则不会为bar.com 上托管的图像 /iframes/etc的请求发送cookie,但会在用户单击链接时发送在将他们带到 bar.com 的 foo.com 主页上
如果 cookie 设置为SameSite=Strict,则 cookie不会包含在来自其他网站的对 bar.com 的请求中,包括如果用户单击 foo.com 上的 bar.com 链接。
如果 cookie 设置为SameSite=None,则 cookie将被发送到 bar.com,包括对图像的请求。
是的,所有请求都会发送 cookie。这包括“img”和“script”以及来自 javascript 的 XMLHttpRquest 调用,并且可能是脚本标签上的安全问题,因为一个网站加载的脚本可以从另一个网站加载脚本,并且也会发送其身份验证 cookie。这可以被利用来窃取数据。
是aspx/js/css/image
的,请求需要 cookie 验证。