Cookie未保存在浏览器中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie未保存在浏览器中相关的知识,希望对你有一定的参考价值。
我正在尝试使用Python Flask后端在我的浏览器中设置一个cookie但是,当我们调用set cookie函数时,我无法观察到浏览器保存的cookie。以下是我目前对如何工作的理解:
- Cookie只是可能具有过期的键值对,这使得它们是持久的,否则它们会在浏览器关闭时到期
- 要设置cookie,所有必要的是在响应中使用set-cookie标头。我调用flask响应对象的set_cookie方法来执行此操作。
- 浏览器应自动保存cookie并遵循过期规则(可以在浏览器收到的响应中观察到set_cookie标头)
在Angular HttpClient中发出请求
let headers = new Headers();
headers.append('Content-Type', 'application/json');
let options = new RequestOptions({ headers: headers, withCredentials: true });
const request_data = {'username': this.username, 'password': this.password};
this.http.post('http://localhost:8080/token', request_data, options)
在Python Flask中设置cookie
g.response = make_response()
time = datetime.datetime.now() + datetime.timedelta(days=30)
g.response.set_cookie("auth_token", auth.token, expires=time)
return g.response
浏览器中的纯文本响应
HTTP/1.1 200 OK
set-cookie: auth_token=7253f2fa43d7584741dcf8972dea8f; Expires=Fri, 05-Jan-2018 01:33:30 GMT; Path=/
vary: Origin
access-control-allow-credentials: true
access-control-allow-origin: http://127.0.0.1:4200
content-type: application/json
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache
Content-Length: 58
Server: Development/2.0
Date: Wed, 06 Dec 2017 01:33:30 GMT
其他想法和帖子探讨:
- 尝试使用Safari和Chrome,并在两者中都获得了相同的结果。我还验证了浏览器允许使用cookie。
- $http doesn't send cookie in Requests
- Cookie is not set in browser
- How do I SET a Cookie (header) with XMLHttpRequest in JavaScript?
题:
如何让浏览器保存cookie以便在当前会话中使用?
答案
cookie的域设置为环回地址(127.0.0.1)。在angular中,我使用'localhost'而不是环回地址来调用set-cookie端点,这阻止了cookie被保存在浏览器中。只要使用环回地址匹配cookie域,端点基本URL和浏览器地址,一切都按预期工作。
有趣的注意事项:目前我不确定为什么,但匹配的地址似乎不够。我还尝试将cookie域,端点基本URL和浏览器地址都设置为“localhost”,但这仍然没有设置cookie。它只在所有值都是环回地址时才起作用。
以上是关于Cookie未保存在浏览器中的主要内容,如果未能解决你的问题,请参考以下文章
CORS - 服务器端 cookie 未保存在 chrome 浏览器上
在 iOS Safari 上的浏览器会话之间未保存 Cookie