为龙卷风中的所有请求设置标头

Posted

技术标签:

【中文标题】为龙卷风中的所有请求设置标头【英文标题】:set headers for all requests in tornado 【发布时间】:2017-07-15 01:11:37 【问题描述】:

我正在为我的请求设置标题:

class ContactInfoHandler(tornado.web.RequestHandler):
    def set_default_headers(self):
        print "setting headers!!!"
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')

    def get(self, *args, **kwargs):
        self.write('something')

我必须为我的所有处理程序都这样做,有没有办法在整个 Tornado 项目中做到这一点?

【问题讨论】:

【参考方案1】:

您可以编写一个继承自tornado.web.RequestHandler 的处理程序,然后所有用作API 的处理程序都可以从该处理程序继承。这是下面的示例。

from tornado.web import RequestHandler

class BaseHandler(RequestHandler):
    def get(self, *args, **kwargs):
        self.write("say something")

    def set_default_headers(self, *args, **kwargs):
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
        self.set_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")

当您完成这一步后,您可以通过编写从BaseHandler 继承的处理程序来完全继承BaseHandler 可以做的事情。

class ContactInfoHandler(BaseHandler):
    def get(self, *args, **kwargs):
        self.write("something")

class TestInfoHandler(BaseHandler):
    def post(self, *args, **kwargs):
        self.write("test result is here")

【讨论】:

以上是关于为龙卷风中的所有请求设置标头的主要内容,如果未能解决你的问题,请参考以下文章

如何为路由组中的所有请求设置标头

在flutter http请求中为所有请求设置默认标头的最佳方法

如何在将请求标头加载到 iframe 之前设置请求标头

如何使用身份验证过滤器将标头设置为令牌请求 OAuth?

如何在 Spring Security 中为所有请求添加 jwt 身份验证标头?

如何在所有请求中传输动态auth值,而不是在SOAPUI中更改每个请求的标头中的值