【发布时间】:2014-11-09 14:39:27
【问题描述】:
我正在尝试做一个 CORS GET 来发送 cookie。我已经在服务器中设置了所有标题(access-control-allow-origin、access-control-allow-credentials、access-control-allow-headers),并在 jquery ajax 请求中使用了withCredentials: true 和crossDomain: true。当我告诉我的浏览器允许第三方 cookie 时,一切正常。有没有办法在不强迫访问者允许第三方 cookie 的情况下做到这一点?我什至尝试过重定向用户并重定向回来,但 CORS 会拒绝发送 cookie。 :/
我尝试过通过 ajax 以及 iframe 执行 CORS 请求。
【问题讨论】:
-
“允许第三方cookies”是什么意思? CORS 仍然强制执行 cookie 的同源策略,因此它只能从服务器的源发送 cookie。您可以将厨师从一个来源发送到另一个来源。
-
我有一个来自域 A.com 的页面,我正在尝试在 A.com 的页面上从 B.com 执行 GET/POST。这两个域都是受信任的。这有意义吗?
-
A.com 只能从 A.com 读取/写入 cookie。 B.com 只能从 B.com 读取/写入 cookie。 withCredentials 不会让 A.com 上的 Javascript 从 B.com 读取 cookie,它只表明从 A.com 到 B.com 的请求应该包含 B.com 的 cookie。因此,即使使用 CORS,cookie 的同源策略仍然有效。
-
就是这样,如果我禁止第三方 cookie,发送到 B.com 的请求不包括 B.com 的 cookie
-
在这种情况下,查看用于发出请求的代码以及捕获请求和响应标头(来自浏览器的调试器)会很有用。
标签: cookies cross-domain cors same-origin-policy