Firefox 不在 Ajax 请求中发送 cookie (XMLHttpRequest)

mba*_*eth 3 cookies firefox xmlhttprequest

我在跨站点 JavaScript 请求和发送 cookie 方面遇到了新问题,但仅限于 Firefox。

我有这个代码

        $.ajax({
            type: "POST",
               url: "https://server.com/page",
               data: $('#formdata').serialize(), 
            xhrFields: {
                  withCredentials: true
               },
              success: function(html){ 
                   alert("Thank you for your submission") 
               },
               crossDomain: true
             });
    }
Run Code Online (Sandbox Code Playgroud)

(上下文:这是 CSRF 攻击如何工作的示例)

https://server.com/page依赖于要发送的会话 ID cookie。cookie 已设置,SameSite设置为NoneSecure包含标志。myserver.com 已设置Access-Control-Allow-Origin包含发出此请求的站点。它也有

Access-Control-Allow-Credentials: true
Run Code Online (Sandbox Code Playgroud)

但是,在 Firefox 中,不会发送会话 ID cookie。我确信在我最近一次 Firefox 升级之前它曾经是这样的。我检查了另一个选项卡,cookie 就在那里,并且确实有正确的设置。

它可以在 Chrome 中运行,也可以在 Safari 中运行。

有谁知道 Firefox 最近是否改变了政策?有我可以配置的设置吗?

我的 Firefox 版本是 104.0.2(64 位),在 Mac(蒙特雷)上运行。

mba*_*eth 9

没关系,我找到了。Firefox 的Total Cookie Protection可以阻止几乎所有跨站点 cookie 发送。可以说是一件好事,但如果您像我一样确实想要启用跨站点 cookie,请转到Firefox 中的“设置”和“隐私与安全”。在“增强跟踪保护”下,单击“自定义”并取消选中“Cookie”

  • 这个新功能对我的保护如此之大,以至于浪费了我生命中的几个小时。如果他们能在控制台中发出警告或任何有关正在发生的情况的指示,那就太好了。 (3认同)