KeyError: 'HTTP_ACCESS_TOKEN': Flask с gevent WSGIServer - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь запустить свое приложение Flask в производство с gevent WSGIServer

if __name__ == "__main__":

    app_host = "0.0.0.0"
    app_port = "8080"
    #app.run(host=app_host, port=app_port, debug=False)

    http_server = WSGIServer((app_host, app_port), app)
    logging.info("Starting the App server")
    http_server.serve_forever()

Я запускаю сервер приложений с gevent WSGIServer. Всякий раз, когда я пытаюсь получить какие-либо данные, например

token = request.headers["access_token"]

, получаю следующую ошибку:

File "app.py", line 62, in post
token = request.headers["access_token"]
File "/home/shravan40/.local/lib/python3.6/site-packages/werkzeug/datastructures.py", line 1463, in __getitem__
return _unicodify_header_value(self.environ["HTTP_" + key])
KeyError: 'HTTP_ACCESS_TOKEN'
2020-08-03T18:01:31Z {'REMOTE_ADDR': '::ffff:127.0.0.1', 'REMOTE_PORT': '55088', 'HTTP_HOST': '127.0.0.1:8080', (hidden keys: 26)} failed with KeyError

1 Ответ

0 голосов
/ 05 августа 2020

pywsgi имеет что-то под названием SecureEnviron. Это предназначено для предотвращения непреднамеренной печати или регистрации потенциально конфиденциальной информации, такой как HTTP-авторизация и файлы cookie.

Более подробную информацию можно найти в официальной документации access_token в качестве ключа в заголовках и пытаясь получить к нему доступ из кода, он повышал KeyError: 'HTTP_ACCESS_TOKEN', потому что не был частью whitelist_keys.

Я использовал Authorization как ключ заголовка, и он работал как шарм. То же самое можно сделать, добавив access_token в whitelist_keys.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...