我需要内容吗?

HTTP标准说:

如果该头[Content-Disposition:attachment]用于application / octet-stream内容类型的响应中,暗示的建议是用户代理不应显示响应,而是直接输入`save response as .. 。'对话框。

我读到了

Content-Type: application/octet-stream
Content-Disposition: attachment

但我会认为Content-Type应该是application/pdfimage/png等。

我是否需要Content-Type: application/octet-stream如果我想让浏览器下载文件?


没有。

内容类型应该是已知的内容,如果你知道的话。 application/octet-stream在RFC 2046中被定义为“任意二进制数据”,这里有一个明确的重叠,它适用于那些唯一的预期目的是保存到磁盘上,威比”。 或从另一个方向来看待它; 唯一可以安全地使用application / octet-stream的方法是将其保存到文件中,并希望其他人知道它的用途。

您可以将Content-Disposition使用与其他内容类型(如image/png甚至text/html结合使用,以指示您想要保存而不是显示。 过去,有些浏览器在text/html的情况下会忽略它,但我认为这是很久以前的事了(我很快就要上床了,所以我不会开始测试现在的整个浏览器;也许以后)。

RFC 2616也提到了扩展令牌的可能性,而且现在大多数浏览器都认可inline ,意味着如果可能的话,你确实希望显示实体(也就是说,如果它是一种浏览器知道如何显示的类型,否则它在这件事上别无选择)。 这当然是默认的行为,但它意味着你可以包含标题的filename部分,哪些浏览器会使用(或许经过一些调整,以便文件扩展名符合所讨论的内容类型的本地系统规范,可能不会)作为建议,如果用户尝试保存。

因此:

Content-Type: application/octet-stream
Content-Disposition: attachment; filename="picture.png"

意思是“我不知道这到底是什么,请把它保存为一个文件,最好命名为picture.png”。

Content-Type: image/png
Content-Disposition: attachment; filename="picture.png"

意思是“这是一个PNG图像,请将其保存为一个文件,最好命名为picture.png”。

Content-Type: image/png
Content-Disposition: inline; filename="picture.png"

意思是“这是一个PNG图像,除非你不知道如何显示PNG图像,否则请显示它,否则,或者如果用户选择保存它,我们推荐使用名为picture.png的文件保存为”。

在那些识别inline浏览器中,一些总是会使用它,而其他人会在用户选择“保存链接为”时使用它,而不是在浏览时选择“保存”(或者至少IE曾经是这样的,它几年前可能已经改变了)。

链接地址: http://www.djcxy.com/p/8069.html

上一篇: Do I need Content

下一篇: Type header for an HttpClient request?