Test_client () Flask не передает пользовательские заголовки HTTP в приложение Flask - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть что-то вроде этого в моем тестовом скрипте:

def setUp(self):
    app = create_app()
    self.app = app.test_client()

def test_001(self):

    with self.app as app:
        headers = { 'API-KEY': 'myKey' }            
        app.get('/endpoint1', follow_redirects=True,headers=headers)

Читая операторы печати из моего приложения, я вижу, что моя конечная точка приложения вызывается, и все выглядит нормально, за исключением отсутствия заголовкаиз запроса.

В моем API у меня есть такой оператор печати:

log("Headers: " + str(request.headers))

Это выводит следующие сообщения в консоли:

Headers: User-Agent: werkzeug/0.14.1
Host: localhost
Content-Length: 0

Так что, очевидно, клиент отправляетнекоторые заголовки, но не пользовательский, который я добавил.

Кто-нибудь видит, что я делаю неправильно, из-за чего заголовки либо не отправляются, либо они недоступны для сервера?

Ответы [ 2 ]

0 голосов
/ 14 августа 2019

Для тех, кто все еще борется: использование follow_redirects=True как-то теряет заголовки при перенаправлении.

Простой обходной путь - сделать перенаправление самостоятельно:

headers = { 'KEY': '123' }
code = 301
url = '/v1/endpoint'

while code == 301:
    response = client.get(url, headers=headers)
    code = response._status_code
    if code == 301: #'Location' is only in header if 301
        url = response.headers['Location']

0 голосов
/ 19 сентября 2018
def setUp(self):
    self.app = create_app()
    self.app.config['TESTING'] = True
    self.app_context = self.app.app_context()
    self.app_context.push()
    self.client = self.app.test_client()

def test_001(self):
    headers = { 'API-KEY': 'myKey' }            
    response = self.client.get('/endpoint1', follow_redirects=True, headers=headers)
...