我使用 Python 3.6 在生产模式下在服务器上运行 Flask Restful,并访问需要 jwt 身份验证的端点,但我不断收到“NoAuthorizationError Missing Authorization Header”错误。
奇怪的是,使用 Postman 将相同的请求发送到我的 Mac 上完全相同的 Flask 应用程序的本地版本,并且它工作得很好,没有任何错误。该问题仅发生在实时服务器上,并且所有 pip 包也都是完全相同的版本。
UPDATE
我在实时服务器上使用 Gunicorn,当我停止应用程序并正常运行时,使用python run.py
错误消失并返回正确的响应。
我为 jwt 错误设置了以下处理程序,并且再次在我的应用程序的本地版本上捕获它:
- jwt.token_in_blacklist_loader
- jwt.expired_token_loader
- jwt.invalid_token_loader
- jwt.revoked_token_loader
- jwt.needs_fresh_token_loader
- jwt.unauthorized_loader
- jwt.claims_verification_failed_loader
出于测试目的,我不会在请求本身中发送令牌。即使我这样做了,错误仍然存在。
这是我的 Mac 上的本地响应:
{
"errors": {
"application": "Missing Authorization Header",
"validation": null
},
"http_status": 401,
"message": "There was a problem authenticating your token.",
"status": 0,
"time": 20
}
这是实时服务器上的响应:
Aug 29 17:15:15 [5168]: return self.dispatch_request(*args, **kwargs)
Aug 29 17:15:15 [5168]: File "/home/domain.com/apps/core-api/env/lib/python3.6/site-packages/flask_restful/__init__.py", line 595, in dispatch_request
Aug 29 17:15:15 [5168]: resp = meth(*args, **kwargs)
Aug 29 17:15:15 [5168]: File "/home/domain.com/apps/core-api/env/lib/python3.6/site-packages/flask_jwt_extended/view_decorators.py", line 102, in wrapper
Aug 29 17:15:15 [5168]: verify_jwt_in_request()
Aug 29 17:15:15 [5168]: File "/home/domain.com/apps/core-api/env/lib/python3.6/site-packages/flask_jwt_extended/view_decorators.py", line 31, in verify_jwt_in_request
Aug 29 17:15:15 [5168]: jwt_data = _decode_jwt_from_request(request_type='access')
Aug 29 17:15:15 [5168]: File "/home/domain.com/apps/core-api/env/lib/python3.6/site-packages/flask_jwt_extended/view_decorators.py", line 284, in _decode_jwt_from_request
Aug 29 17:15:15 [5168]: raise NoAuthorizationError(errors[0])
Aug 29 17:15:15 [5168]: flask_jwt_extended.exceptions.NoAuthorizationError: Missing Authorization Header
我一直在尝试追踪这个问题here https://github.com/vimalloc/flask-jwt-extended/issues/86,但还没有成功。