Http 烧瓶发送“文件:我如何知道我是否需要”;作为“附件”;?

Http 烧瓶发送“文件:我如何知道我是否需要”;作为“附件”;?,http,flask,content-disposition,Http,Flask,Content Disposition,Flask具有返回文件的方法: 有一个名为as_attachment的参数,默认值为False,还有一个handwavy语句:“为了额外的安全性,您可能希望将某些文件作为附件发送(例如HTML)” 我如何知道我的用例是否是“那些特定的文件”?或者说,与将其保留为False相比,这有什么作用?您可以在相同的文档中找到线索,在参数列表的更下方: as_attachment–如果要使用内容处置:attachment标题发送此文件,请设置为True 因此,当设置该标志时,会向响应中添加一个额外的标题,该

Flask具有返回文件的方法:

有一个名为
as_attachment
的参数,默认值为False,还有一个handwavy语句:“为了额外的安全性,您可能希望将某些文件作为附件发送(例如HTML)”


我如何知道我的用例是否是“那些特定的文件”?或者说,与将其保留为False相比,这有什么作用?

您可以在相同的文档中找到线索,在参数列表的更下方:

as_attachment
–如果要使用
内容处置:attachment
标题发送此文件,请设置为
True

因此,当设置该标志时,会向响应中添加一个额外的标题,该标题控制浏览器如何处理响应。从:

在常规HTTP响应中,
内容配置
响应标头是一个标头,指示内容是否应在浏览器中内联显示,即作为网页或网页的一部分,或作为本地下载和保存的附件

如果没有明确的
Content Disposition
标题,来自Flask服务器的
text/html
响应将在浏览器中显示为网页。如果需要将文件保存到磁盘(浏览器提示您如何处理文件),则需要设置
内容处置:附件


因此,当您的响应内容类型可能在浏览器中显示为网页,但您希望用户下载它时,请使用
as_attachment=True
。现在,除了HTML之外,您可能还希望为图像、PDF文件和XML设置该标志。

当您在最后一部分中说“这些天”时,现代浏览器是否尝试呈现所有类型的内容,如图像和PDF?根据你的回答,你不希望这些天都是假的吗?@汤米:那要看情况了。是否希望该文件在浏览器中可渲染?当你在某个地方有一个“下载为PDF”链接时,你想让用户下载该PDF,还是让他们在浏览器中查看文档?@Tommy:当你想让他们下载PDF时,请使用
as_attachment=True
。否则,不要这样做。@Tommy:它会影响所有关心该头的HTTP客户端。浏览器只是带有HTML和JS呈现前端的HTTP客户端,但如果在响应上设置了
Content-Disposition:attachment
,则浏览器不是唯一可能改变行为的HTTP客户端。实际上,这完全取决于客户机如何处理该标题。