龙卷风装饰CORS标头

时间:2019-04-27 11:24:32

标签: rest ionic-framework cors tornado

我将我的离子作为前端,在每个请求中附加一个承载令牌。我的龙卷风服务器已经为CORS配置。问题是当我激活我的装饰器以检查该请求是否具有“ Authorization”标头时,我不知道为什么该标头消失了。没有“授权”标头。但是,如果我禁用此标题,一切正常,龙卷风会向我显示该标题。

有什么主意吗?

我重写RequestHandler set_default_headers方法

具有以下标题:

 set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "authorization")
        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')

装饰器

class EvaluationHandler(RequestHandler)

def get(self):
 print(handler.request.headers) <--- Good headers

我的令牌装饰器对其进行检查:

def jwtauth(handler_class):
    def wrap_execute(handler_execute):
        def require_auth(handler, kwargs):
            auth = handler.request.headers.get('Authorization', None)
            print(handler.request.headers) <---- Bad Headers
            print(auth)
            if auth:
                if not loginRepository.validToken(auth):
                    return_header_error(handler)
            else:
                return_header_error(handler)
                handler._transforms = []
                handler.write(MISSING_AUTHORIZATION_KEY)
                handler.finish()

            return True

        def _execute(self, transforms, *args, **kwargs):
            try:
                require_auth(self, kwargs)
            except Exception:
                return False

            return handler_execute(self, transforms, *args, **kwargs)

        return _execute

    handler_class._execute = wrap_execute(handler_class._execute)
    return handler_class

编辑:问题可能是自定义装饰器正在采用自己的标头配置,但我仍然不知道如何做

1 个答案:

答案 0 :(得分:0)

如果装饰器的唯一功能是检查某些标头,则更好的方法是使用prepare方法,以使事情变得更容易。

EvaluationHandler(RequestHandler):
    def prepare(self):
        auth = self.request.headers.get('Authorization', None)

        if not auth:
            ...
            return self.finish()