【问题标题】:Tornado: how to send back cookies with ajaxTornado:如何使用 ajax 发回 cookie
【发布时间】:2018-01-30 04:32:33
【问题描述】:

我正在使用 Tornado 构建 Web 服务器,现在我正在编写登录模块:登录后,用户可以向服务器发送消息。

我的想法如下:
当用户登录成功后,服务器会设置一个安全cookie:self.set_secure_cookie("user", username, expires=time.time() + 60)

那么当用户向服务器发送消息时,请求中应该包含服务器刚刚设置的cookie,用于告诉服务器用户的身份。如果请求中没有cookie,服务器将重定向到登录页面。

现在的问题是:服务器无法获取任何 cookie。

登录:

您可以看到用户登录时设置了 cookie。

然后浏览器尝试使用ajax向服务器发送消息:

url: 'http://www.example.com/addcomment',
method: post,
crossDomain: true,
data: message,
processData: false,
cache: false

但是,当服务器尝试self.get_secure_cookie("user") 时,它会得到一个None,这意味着该请求不会向服务器发送任何cookie。

我也加了

xhrFields: {
    withCredentials: true
},

到 ajax 但它也不起作用。

如果 ajax 无法向服务器发送任何 cookie,我该如何使用 Tornado 的安全 cookie?

【问题讨论】:

    标签: ajax cookies login tornado


    【解决方案1】:

    好吧,设置 cookie 后,您可以重定向到 visit_page_url

    self.set_secure_cookie
    self.redirect(visit_page_url)
    

    如果你通过 chrome 检查重定向网络请求头,你会发现像这样有 Cookie 字段:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2015-02-12
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2018-12-24
      相关资源
      最近更新 更多