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

标签 firefox cookies cors cross-domain

我在使用 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,我还缺少什么?

    谢谢!

    最佳答案

    Access-Control-Allow-Credentials: true
    

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

    因此,将相同的 header 添加到客户端请求中。 (或者,如果您控制服务器,请考虑不使用 cookie 并使用其他机制传递数据)

    关于即使所有 CORS 允许,Firefox 也不会保留跨域发送的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49591535/

    相关文章:

    css - Firefox 3 为显示 :inline-block 的跨度添加间距

    html - h2 元素全部聚集在 iOS 和 Firefox 上的顶部图像上

    firefox - 升级插件以与 Firefox 4.0 兼容,但也尝试使其与 3.x 兼容。建议?

    html - Firefox 将表格踢到右边

    php - 如何使用 PHP cURL 登录 mediawiki?

    asp.net - MVC3 FormsAuthentication cookie 在 Firefox 和 Chrome 中不被遵守,但在 IE 中有效

    javascript - 如何清除此 JavaScript cookie?

    javascript - 父级无法通过 postMessage() 调用子 iframe 中的函数 - 跨源

    javascript - CORS:为什么我的浏览器不发送 OPTIONS 预检请求?

    jquery - CORS Django 'Access-Control-Allow-Origin'