gpt4 book ai didi

jQuery withCredentials 在 Safari 中不起作用?

转载 作者:行者123 更新时间:2023-12-03 22:27:05 25 4
gpt4 key购买 nike

我正在尝试使用 jQuery.ajax() withCredentials:true 跨域,但由于某种原因它在 Safari 中不起作用。

它可以在 Firefox、Chrome 和 IE(使用 P3P header )中运行,但在 Safari 中无法进行身份验证。

我的代码非常简单:

$.ajax({
url: "http://www.someurl.com",
data: {},
contentType: "application/json",
type: "POST",
success: function(response) {
console.log(response);
},
crossDomain: true,
xhrFields: {
withCredentials: true
},
error: function(jqXHR, textStatus, errorThrown ) {
console.log(JSON.stringify(jqXHR));
}
});

有什么想法吗?我需要在服务器端做一些特定的事情才能让 Safari 接受 cookie 吗?

编辑:一旦我将“阻止 cookie 和其他网站数据”更改为“从不”,它就可以工作,但显然这不是面向公众的网站的解决方案。

Safari 不接受服务器发送的 cookie。这是我的标题(仅显示相关标题),注意两个不同的域:

Request headers:
Referer: https://example.net
Origin: https://example.net
Host: example.org
Accept: application/json, text/javascript, */*; q=0.01

Response headers:
Content-Type: text/html; charset=utf-8
Access-Control-Allow-Credentials: true
Set-Cookie: authentication=8xIhPr9m0Fwky0qcE; expires=Fri, 09-Mar-2018 16:59:55 GMT; Max-Age=8640000; path=/; domain=example.org; secure; httponly
Access-Control-Allow-Origin: https://example.net

是否存在缺少且仅 Safari 需要的 CORS header ?

最佳答案

很抱歉,这个问题没有一个非常优雅的解决方案。Apple 最近采取了严格的政策来阻止第三方 cookie - link

This means users only have long-term persistent cookies and website data from the sites they actually interact with and tracking data is removed proactively as they browse the web.

enter image description here

我能想到的最佳解决方案是将用户重定向到第三方域中托管的登录页面,然后在登录后返回原始页面。这样,cookie 将被存储(因为用户直接与其域交互),并且您还可以作为来自原始域的第 3 方 cookie 与其交互。

关于jQuery withCredentials 在 Safari 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com