Как вернуть URL заголовка местоположения с протоколом https? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть защищенное веб-приложение с веб-контейнерами на основе flask и Celery, которое взаимодействует через https .
Веб-контейнер получает POST-выборку с протоколом https от клиента, запускает фоновая задача и возвращает ответ, который включает URL-адрес для состояния задачи:

jsonify({}), 202, {'Location': url_for('create_zip_file_taskstatus', task_id=task.id)}

Клиент ожидает ответа и затем получает URL-адрес для состояния задачи:

let create_zipfile_status_url = response.headers.get('location');

В порядке относительного URL-адреса самого местоположения без протокола:

url_for('create_zip_file_taskstatus', task_id=task.id): /status/c4bc9e2c-6ecd-4bf3-bc25-782f8e4e66c6

Но полный URL-адрес имеет протокол http , который вызывает ошибки CORS.

create_zipfile_status_url: http://localhost/status/7aba0d27-712d-4623-a37e-5262b53fe212

Как установить URL-адрес заголовка местоположения с протоколом https (вместо http)?

1 Ответ

0 голосов
/ 18 февраля 2020

Я нашел решение здесь . Необходимо добавить _external=True, _scheme='https', т. Е. Изменить с

return jsonify({}), 202, {'Location': url_for('create_zip_file_taskstatus', task_id=task.id)}

на

return jsonify({}), 202, {'Location': url_for('create_zip_file_taskstatus', task_id=task.id, _external=True, _scheme='https')}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...