我有一个在Nginx后面运行的Tornado实例,当GET请求首先到达Nginx时,它将使用以下命令将请求定向到Tornado中的处理程序:
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
然后在Tornado的相应处理程序中:
class MyHandler(tornado.web.RequestHandler):
def get(self, collection, item):
tag = self.get_argument('tag')
self.set_secure_cookie('tag', tag, expires_days=None, httponly=True, secure=True)
self.set_header('X-Accel-Redirect', ''.join(('/blah/blah/', collection, '/', item, '/tag.html')))
self.finish()
基本上将请求重定向回Nginx并要求它提供静态html页面。但是,如上所示,我想在重定向之前设置一个安全的cookie。这有用吗?
答案 0 :(得分:1)
在tornado.web中设置安全cookie的方式不同。在内部,它只是使用加密值调用set_cookie
。
def set_secure_cookie(self, name, value, expires_days=30, **kwargs):
self.set_cookie(name, self.create_signed_value(name, value),
expires_days=expires_days, **kwargs)
根据nginx Documentation nginx,只需在使用XSendfile / X-Accel时将Set-Cookie HTTP标头转发到浏览器。