即使所有 CORS 允许,Firefox 也不会保留跨域发送的 cookie

Posted

技术标签:

【中文标题】即使所有 CORS 允许,Firefox 也不会保留跨域发送的 cookie【英文标题】:Firefox does not keep cookies sent by cross-domain even with all CORS allow 【发布时间】:2018-09-10 12:07:16 【问题描述】:

我在使用 Firefox 时遇到问题,而 Chrome 工作正常。情况如下:

Website1.com 在 SSL 中返回一个 html 页面。 此页面通过 img 标记或 XMLHttpRequest(相同问题)在 SSL 中向 Website2.com 发出请求。 Website2.com 返回一个为自己设置的 cookie Firefox 忽略此 cookie。即使它显示在控制台中,它也永远不会被存储。 控制台不会抱怨任何事情。

客户端发送:

Origin: https://website1.com

服务器返回:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: *
Access-Control-Allow-Origin: https://website1.com
Access-Control-Expose-Headers: *
Set-Cookie: ...

关于 CORS,我还缺少什么?

谢谢!

【问题讨论】:

你找到答案了吗?我有同样的问题,一切都适用于 chrome 和 ie ...但 Firefox 没有发送 cookie。 可能和你的浏览器设置有关,请重置firefox。 嘿,您的 Firefox 中是否启用了接受第三方 cookie 和数据? 是的,它正在接受,并且设置被设置为默认值。我使用标准版和开发版在不同的计算机上进行了尝试。 【参考方案1】:
Access-Control-Allow-Credentials: true

是一个特殊的标志。如果一方声明,另一方也必须声明,否则安全失败,浏览器将不接受数据。

所以向客户端请求添加相同的标头。 (或者如果您控制服务器,请考虑不使用 cookie 并使用其他机制传递数据)

【讨论】:

以上是关于即使所有 CORS 允许,Firefox 也不会保留跨域发送的 cookie的主要内容,如果未能解决你的问题,请参考以下文章

即使服务器返回适当的响应标头,Firefox 也不允许 CORS 请求

IE CORS - 即使指定了标头,访问控制允许标头错误

即使我允许所有来源,为啥我会收到 CORS 错误?

即使服务器已实现 cors,默认情况下 Chrome 是不是也不允许使用 cors?

“访问 XMLHttpRequest 已被 CORS 策略阻止”即使我已允许所有源/标头/方法

如何使用信号器允许 cors