即使所有 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 请求
即使服务器已实现 cors,默认情况下 Chrome 是不是也不允许使用 cors?