【问题标题】:Chrome not persisting CORS cookieChrome 没有持久化 CORS cookie
【发布时间】:2017-09-23 23:12:09
【问题描述】:

该设置使用一个主干模型,Nginx 服务器。用户输入他们的用户名和密码,然后通过帖子传递。服务器进行身份验证并返回一个会话 cookie。

当后端和前端在同一台服务器上时(例如通过本地主机连接),cookie 被存储。但是,当连接是远程时,它不会存储在 Chrome 中;但是,它存储在 Safari 和 FireFox 中。

Ajax 是通过

设置的
$.ajaxSetup({
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    }
});

请求头是

POST /login HTTP/1.1
Host: localhost:8102
Connection: keep-alive
Content-Length: 59
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://127.0.0.1:9102
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36
Content-Type: application/json
DNT: 1
Referer: http://127.0.0.1:9102/somefolder
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

响应头是

HTTP/1.1 200 OK
access-control-allow-origin: http://127.0.0.1:9102
access-control-allow-credentials: true
vary: origin,accept-encoding
access-control-expose-headers: WWW-Authenticate,Server-Authorization
content-type: text/html; charset=utf-8
set-cookie: na-auth-token=encrypted-string; Max-Age=86400; Expires=Thu, 27 Apr 2017 13:32:44 GMT; HttpOnly; SameSite=Strict; Path=/
cache-control: no-cache
content-encoding: gzip
Date: Wed, 26 Apr 2017 13:32:44 GMT
Connection: keep-alive
Transfer-Encoding: chunked

在 FireFox 和 Safari 中,cookie 存储得很好,但在 Chrome 中,它会得到响应并在没有任何通知的情况下扔掉 cookie。

更新

cookie 实际上保存在 localhost 域下,但是当您导航回页面时(例如通过window.location.reload),cookie 会消失。

【问题讨论】:

    标签: javascript google-chrome cookies backbone.js cross-domain


    【解决方案1】:

    所以我的问题的答案在于我们正在使用的库中

    hapi-auth-cookie

    更新包并引入标志isSameSite。将此值更改为 false 以允许 cors cookie 在页面加载之间持续存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 2012-08-09
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多