Session.cookies.get_dict()返回一个空字典

时间:2018-12-10 17:55:59

标签: javascript python

因此,我要使用此javascript代码在每个页面上设置一个Cookie:

setTimeout(function(){
  var pageStats = getCookie('PageStats');
  var currentPage = {
      "url": window.location.href,
      "render_time": $('.render_time').html(),
      "queries_number": $('.queries_number').html(),
      "queries_time": $('.queries_time').html()
    }
    document.cookie = "PageStats=" + JSON.stringify(currentPage) + ";path=/";
}, 1000);

然后我尝试通过我的python脚本获取它:

import requests
    session = requests.Session()
    response = session.get('http://127.0.0.1:800/')
    print(response.cookies.get_dict())

这返回{},尽管我可以通过浏览器查看所有cookie。 怎么了?

1 个答案:

答案 0 :(得分:2)

您要获取的Cookie来自requests.Session()会话,而不是浏览器。发生这种情况的原因是,仅当您的浏览器呈现HTML时才执行JavaScript。由于请求不会呈现HTML,而只是发送一个简单的HTTP请求,因此未设置这些cookie。我可以看到此工作的唯一方法是,如果您在服务器端设置cookie。
这是一个使用Python 3的Flask的简单示例:

from flask import Flask, make_response
app = Flask(__name__)

@app.route("/")
def index():
    r = make_response("Hello World")
    r.set_cookie("flask-cookie", "this is some data in a cookie")
    return r

if __name__ == "__main__":
    app.run(port=8080)

或者,如果您使用NodeJS的ExpressJS

var express = require("express");
var app = express();

app.get("/", function(req, res) {
    res.cookie("express-cookie", "this is some data in a cookie").send("Hello World");
});

app.listen(8080);