Колба send_file: как узнать, нужен ли мне as_attachment? - PullRequest
0 голосов
/ 29 января 2019

У Flask есть метод для возврата файла: http://flask.pocoo.org/docs/1.0/api/#flask.send_file

Существует параметр с именем as_attachment со значением по умолчанию False, и в нем есть ручное выражение: «Для дополнительной безопасности вы, вероятно,хотите отправить определенные файлы в виде вложений (например, HTML) "

Как узнать, является ли мой вариант использования" этими определенными файлами "?Или, в качестве альтернативы, указано, что это делает вместо того, чтобы оставить это как ложное?

1 Ответ

0 голосов
/ 29 января 2019

Вы найдете подсказку в той же документации, далее в списке параметров:

as_attachment - установите на True, если вы хотите отправить этот файл с Content-Disposition: attachment header.

Таким образом, когда флаг установлен, к ответу добавляется дополнительный заголовок, который контролирует, как браузер будет обрабатывать ответ.Из документации MDN по Content-Disposition:

В обычном HTTP-ответе заголовок ответа Content-Disposition является заголовком, указывающим, ожидается ли отображение содержимого встроенный в браузере, то есть в виде веб-страницы или как часть веб-страницы, или в виде вложения , которое загружается и сохраняется локально.

Без явного заголовка Content-Disposition ответ text/html с вашего сервера Flask будет отображаться как веб-страница в браузере.Если вам нужно было вместо этого сохранить файл на диск (браузер подсказывает вам, что делать с файлом), то вам нужно установить Content-Disposition: attachment.

Поэтому, когда ваш тип содержимого ответа можетбудет отображаться в браузере как веб-страница, но вы хотите, чтобы пользователь вместо этого загружал ее, используйте as_attachment=True.В наши дни, в дополнение к HTML, вы, вероятно, захотите установить этот флаг для изображений, файлов PDF и XML.

...