我将我的离子作为前端,在每个请求中附加一个承载令牌。我的龙卷风服务器已经为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
编辑:问题可能是自定义装饰器正在采用自己的标头配置,但我仍然不知道如何做
答案 0 :(得分:0)
如果装饰器的唯一功能是检查某些标头,则更好的方法是使用prepare
方法,以使事情变得更容易。
EvaluationHandler(RequestHandler):
def prepare(self):
auth = self.request.headers.get('Authorization', None)
if not auth:
...
return self.finish()