【发布时间】: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