Код: Выделить всё
@app.after_request
def add_header(response):
print(response.headers)
return response
Код: Выделить всё
Jan 07 13:54:21 dev1 uwsgi[133646]: Content-Type: text/html; charset=utf-8
Jan 07 13:54:21 dev1 uwsgi[133646]: Content-Length: 208
Jan 07 13:54:21 dev1 uwsgi[133646]: Location: /
Код: Выделить всё
43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 Content-Type: te
78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 xt/html; charset
3d 75 74 66 2d 38 0d 0a =utf-8..
43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 Content-Length:
32 30 38 0d 0a 208..
4c 6f 63 61 74 69 6f 6e 3a 20 68 74 74 70 3a 2f Location: http:/
6d 2f 0d 0a m/..
53 65 74 2d 43 6f 6f 6b 69 65 3a 20 73 65 73 73 Set-Cookie:
Как это часто бывает, после написания этого и опубликовав вопрос, я понял, что uwsgi_params в nginx может влиять на это. Так оно и было на самом деле. Я оставляю это открытым для собственного обучения: я предполагаю, что замена «Местоположение: /» на «Местоположение: PROTO://URL/» происходит в uwsgi, а не во фласке, и я хотел бы узнать об этом больше.
Для всех, кто зашел сюда через Google: первоначальная проблема заключалась в том, что некоторые браузеры не отправляли файлы cookie во время перенаправления. Оказывается, это произошло потому, что заголовок Location указывал протокол http для https-соединения. Это произошло потому, что и nginx, и uwsgi находятся за балансировщиком нагрузки, который разгружает https. Жесткое кодирование https в файле uwsgi_params привело к возврату правильного протокола и устранило проблему.
Подробнее здесь: https://stackoverflow.com/questions/793 ... nse-header