我正在尝试使用 Python Flask 后端在浏览器中设置 cookie,但是,当我们调用 set cookie 函数时,我无法观察到浏览器正在保存的 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
浏览器的 cookie 部分
探索的其他想法和帖子:
题:
如何让浏览器保存 cookie,以便在当前 session 中使用它?
最佳答案
cookie 的域被设置为环回地址 (127.0.0.1)。在 angular 中,我使用 'localhost' 而不是回送地址来调用 set-cookie 端点,这会阻止 cookie 保存在浏览器中。一旦 cookie 域、端点基 URL 和浏览器地址使用环回地址匹配,一切都会按预期进行。
有趣的旁注:我现在不知道为什么,但匹配地址似乎还不够。我还尝试将 cookie 域、端点基 URL 和浏览器地址都设置为“localhost”,但这仍然没有设置 cookie。它仅在所有值都是环回地址时才起作用。
关于python - Cookie 未保存在浏览器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666210/