Safari不会随机发送XMLHTTPRequest cookie

问题描述 投票:0回答:1

我有一个使用PassportJS身份验证的Express服务器。我正在使用标准XMLHTTPRequests来检索文件。

Chrome和Firefox正常工作。 Safari(Mac和iOS)无法发送带有某些请求的请求Cookie,并且操作不一致。

记录的失败请求均具有未经PassportJS认证的不同会话ID。

Chrome和Firefox对所有请求都有一个会话ID。

我没有使用跨域请求,这些都是相同源的。我曾尝试使用withCredentials true和相同的结果,但是无论如何都不需要此属性,因为它是同源的,Chrome和Firefox在没有它的情况下也可以使用。

似乎没有文件无法将请求Cookie发送到的模式。有时随机(但很少),所有请求都可以正常加载。

这不是顺序失败,大多数请求都先从失败开始,然后是一系列失败,中间有一些成功。

Express服务器没有销毁会话,它们不断积累。失败的请求具有未通过身份验证的会话的会话ID。

什么会导致Safari随机不发送某些XMLHTTPRequest的请求cookie?

express safari xmlhttprequest passport.js express-session
1个回答
0
投票
https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes

我的大多数加载文件的crossOrigin属性都设置为“匿名”。由于某些原因,Chrome和Firefox似乎忽略了这一点,无论如何都发送了cookie凭据,但Safari却没有。将此属性设置为“ use-credentials”可以正常工作:

img.crossOrigin =“使用凭证”;

© www.soinside.com 2019 - 2024. All rights reserved.