该设置使用Backbone Model,Nginx服务器。用户输入他们的用户名和密码,然后通过帖子传递。服务器验证并返回会话cookie。
当后端和前端位于同一服务器上时(例如通过localhost连接),将存储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就会消失。
答案 0 :(得分:1)
所以我的问题的答案在我们正在使用的库中撒谎
HAPI-AUTH-饼干
更新了软件包并引入了一个标志Type
。将此值更改为false以允许cors cookie在页面加载之间保持不变。