三星互联网浏览器在 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”对您和我都有效。
登录后,我正在设置一些 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”对您和我都有效。