Tornado—添加请求头允许跨域请求访问

跨域请求访问

如果是前后端分离,那就肯定会遇到cros跨域请求难题,可以设置一个BaseHandler,然后继承即可。

class BaseHandler(tornado.web.RequestHandler):
    def __init__(self, *argc, **argkw):
        super(BaseHandler, self).__init__(*argc, **argkw)
        
    # 解决跨域问题
    def set_default_headers(self):
        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")
        self.set_header("Access-Control-Max-Age", 1000) 
        self.set_header("Content-type", "application/json")

    def get(self):
        self.write('request get')

    def post(self):
        self.write('request post')

    # vue一般需要访问options方法, 如果报错则很难继续,所以只要通过就行了,当然需要其他逻辑就自己控制。
    def options(self):
        # 返回方法1
        self.set_status(204)
        self.finish()
        # 返回方法2
        self.write('{"errorCode":"00","errorMessage","success"}')

继承BaseHandler类

class AdminTasks(BaseHandler):
    # 重写了BaseHandler父类的get方法
    def get(self):
        # 处理业务逻辑
        return self.write(json.dumps({"status": "success", "data": "请求成功"}))

    # 重写了BaseHandler父类的post方法
    def post(self):
        # 处理业务逻辑
        return self.write(json.dumps({"status": "success", "data": "请求成功"}))

猜你喜欢

转载自www.cnblogs.com/liuhaidon/p/12015044.html