通过Nginx为secure响应设置secure_cookie

时间:2013-02-10 21:30:09

标签: cookies nginx tornado

我有一个在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。这有用吗?

1 个答案:

答案 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标头转发到浏览器。