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

ehs*_*adi 3 python tornado request-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')
Run Code Online (Sandbox Code Playgroud)

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

wei*_*ney 7

您可以编写从中继承的处理程序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")
Run Code Online (Sandbox Code Playgroud)

正如您已完成此步骤一样,您可以完全继承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")
Run Code Online (Sandbox Code Playgroud)