三星互联网浏览器在 Ajax 请求时忽略 set-cookie

Samsung internet browser ignoring set-cookie on Ajax request

登录后,我正在设置一些 cookie,这在 FF、Chrome、Edge 等中有效。但是由于某种原因,Samsung Internet Browser 似乎忽略了我的 cookie。

我已启用 cookie,它正在接受来自其他站点的 cookie,但我不明白为什么它不接受它们。我从我的服务器获得了这个捕获:

HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: token=e1c137y8WEZItXVWExXBWRyQl9mxgxEvEMG++F6pzwart%2FAO0lTSA3tL48oeHclD%2FLQMdXWhgXvefpGR3QGMqwMe8cg%3D; HttpOnly; SameSite=Strict; Path=/; Expires=Wed, 08 May 2019 07:03:43 GMT
Set-Cookie: email=%2FwGLVu+6Yv5fYpSyZwRE8TIi0MlZZ6WaN+OaKusCF6pEyQjomquJmWwqSgrcHg2dcBeMBU%2Foeg%3D%3D; HttpOnly; SameSite=Strict; Path=/; Expires=Wed, 08 May 2019 07:03:43 GMT
Set-Cookie: testing=TESTETSETESET; HttpOnly
Server: Rocket
Content-Length: 56
Date: Wed, 01 May 2019 07:03:43 GMT

{ ... }

我试过更改 HttpOnly、SameSite、Secure 和域设置,但到目前为止什么都没有。

有什么想法吗?

三星上网本9.2.00.70

编辑:

这似乎是因为 cookie 是通过 Ajax 查询设置的。我将其更改为正常形式 POST 的响应,它似乎有效。更多挖掘...

原来是应我的Ajax要求。一旦我将 credentials: "same-origin" 添加到请求中,它就会按预期工作。

你的问题对我也有帮助。我在三星浏览器 9.2 中有完全相同的错误。我正在使用 github fetch 实现,在文档中您可以看到:

The default value for credentials is "same-origin".

The default for credentials wasn't always the same, though. The following versions of browsers implemented an older version of the fetch specification where the default was "omit":

Firefox 39-60

Chrome 42-67

Safari 10.1-11.1.2

If you target these browsers, it's advisable to always specify credentials: 'same origin' explicitly with all fetch requests instead of relying on the default:

这就是明确设置凭据的原因:“same-origin”对您和我都有效。