python - Cookie 未保存在浏览器中

标签 python cookies browser

我正在尝试使用 Python Flask 后端在浏览器中设置 cookie,但是,当我们调用 set cookie 函数时,我无法观察到浏览器正在保存的 cookie。以下是我目前对它应该如何工作的理解:

  • Cookie 只是键值对,可能有一个过期时间,使它们持久化,否则它们会在浏览器关闭时过期
  • 要设置 cookie,只需在响应中使用 set-cookie header 即可。我调用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
    

    浏览器的 cookie 部分
    screenshot of no cookies being saved

    探索的其他想法和帖子:
  • 尝试使用 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,以便在当前 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/

    相关文章:

    python - 我尝试创建一个面积计算器,它不断指出正确代码的语法无效

    python - 应用引擎 : filter for value in list returns empty list

    javascript - 在 Chrome 扩展程序中访问 Cookie

    angularjs - 无法访问 angular.js $cookies 对象

    python - nltk 没有将 $NLTK_DATA 添加到搜索路径?

    python - 当使用 GDAL 支持调用 imread 时,OpenCV 返回 None

    javascript - 在崩溃之前检测浏览器中的内存耗尽

    javascript - XSS - 哪些浏览器会自动转义地址栏中的网址?

    c# - 我的 cookie 测试不起作用

    javascript - 阻止某些设备和浏览器访问我的网站