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

set headers for all requests in tornado

我正在为我的请求设置 headers:

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 项目中执行此操作?

您可以编写一个继承自 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")