Cookies CORS,带有凭据和第三方cookie

Cookies CORS,带有凭据和第三方cookie,cookies,cross-domain,cors,same-origin-policy,Cookies,Cross Domain,Cors,Same Origin Policy,我正试着做一个CORS GET,它会把饼干和饼干一起发送出去。我已经在服务器中设置了所有头(access-control-allow-origin,access-control-allow-credentials,access-control-allow-headers),并在jquery-ajax请求中使用with-credentials:true和跨域:true。当我告诉我的浏览器允许第三方cookie时,一切正常。有没有办法在不强制访问者允许第三方cookie的情况下做到这一点?我甚至尝试

我正试着做一个CORS GET,它会把饼干和饼干一起发送出去。我已经在服务器中设置了所有头(
access-control-allow-origin
access-control-allow-credentials
access-control-allow-headers
),并在jquery-ajax请求中使用
with-credentials:true
跨域:true
。当我告诉我的浏览器允许第三方cookie时,一切正常。有没有办法在不强制访问者允许第三方cookie的情况下做到这一点?我甚至尝试重定向用户并重定向回,但CORS将拒绝发送cookie/


我尝试过通过ajax和iframe来执行CORS请求。

我认为这是不可能的。关于这一点,请参见我的(旧的但相关的)。 唯一的防弹方法是使用第一方cookie(即,在顶级窗口中打开窗口,如单独的选项卡,或重定向当前窗口)

但在某些情况下,这是不必要的。浏览器对第三方cookie的概念略有不同,默认行为也有所不同。对这些细节有一个很好的概述。因此,在某些情况下,您可以使用一些技巧来启用(或至少检测)页面上的cookie


其他解决方法包括将一台服务器置于另一台服务器的子域下(子域通常不被视为第三方),或更改流程,以便通过Cookie以外的其他方式对用户进行身份验证。

什么是“允许第三方Cookie”?CORS仍然强制cookie的同源策略,因此它只能从服务器的源发送cookie。您可以将cooke从一个来源发送到另一个来源。我有一个来自域a.com的页面,我正在尝试在a.com的页面上从B.com获取/发布。这两个域都是可信的。这有意义吗?A.com只能从A.com读取/写入cookies。B.com只能从B.com读取/写入Cookie。withCredentials不允许A.com上的Javascript从B.com读取cookies,它只表示从A.com到B.com的请求应该包括B.com的cookies。因此,即使使用CORS,cookie的同源策略仍然是强制执行的。这就是问题所在,如果我不允许第三方cookie,则发送到B.com的请求不包括B.com的cookie。在这种情况下,查看用于发出请求的代码以及请求和响应头的捕获(来自浏览器的调试器)将非常有用。