Flask有一种返回文件的方法:http://flask.pocoo.org/docs/1.0/api/#flask.send_file
有一个名为as_attachment
的参数,默认值为False,并且有一个手工的说法:“为了提高安全性,您可能希望将某些文件作为附件发送(例如HTML)”
我怎么知道我的用例是否是“那些特定文件”?或者换句话说,这与将其保留为False相比有什么作用?
答案 0 :(得分:1)
您将在同一文档中找到线索,在参数列表的更下方:
as_attachment
–如果要发送带有True
标头的文件,请设置为Content-Disposition: attachment
。
因此,设置该标志时,会在响应中添加一个额外的标头,该标头控制浏览器如何处理响应。来自MDN documenation on Content-Disposition
:
在常规HTTP响应中,
Content-Disposition
响应标头是一个标头,指示是否希望在浏览器中以 inline 的形式显示内容,即以网页还是以网页的一部分,或作为附件,可以在本地下载并保存。
没有明确的Content-Disposition
标头,来自Flask服务器的text/html
响应将在浏览器中显示为网页。如果您需要将文件保存到磁盘(浏览器提示您如何处理文件),则需要设置Content-Disposition: attachment
。
因此,当您的响应内容类型可能在浏览器中显示为网页,但您希望用户下载它时,请使用as_attachment=True
。如今,除了HTML之外,您可能还希望为图像,PDF文件和XML设置该标志。