为了账号安全,请及时绑定邮箱和手机立即绑定

我需要内容类型:应用程序/八位流文件下载吗?

我需要内容类型:应用程序/八位流文件下载吗?

长风秋雁 2019-07-01 11:23:04
我需要内容类型:应用程序/八位流文件下载吗?这个http标准说:如果在应用程序/八位流内容类型的响应中使用此头[内容-处理:附件],则隐含的建议是用户代理不应显示响应,而应直接输入“保存响应为.”。对话。我读到Content-Type: application/octet-stream Content-Disposition: attachment但我觉得Content-Type会是application/pdf, image/png等我应该Content-Type: application/octet-stream如果我想要浏览器下载文件?
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

没有。

内容类型应该是已知的任何类型,如果您知道的话。application/octet-stream定义为RFC 2046中的“任意二进制数据”,并且这里有一个明确的重叠,它适用于其唯一目的是保存到磁盘的实体,从那时起,它就不存在于任何“Webby”之外。或者从另一个角度看它;使用应用程序/八位流唯一安全的方法是将其保存到文件中,并希望其他人知道它的用途。

您可以结合使用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曾经是这样的,它可能在几年前就已经改变了)。


查看完整回答
反对 回复 2019-07-01
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

这是一个很好的答案,如果事情是这样的话,那就太好了。但不幸的是,所有的浏览器都被破坏了。例如,如果这是来自表单的响应,google Chrome将不会为您打开一个“文件保存”窗口,而不管它是否包含“内容处理:附件”,即使以“应用程序/八位流”作为内容类型。然后他们打印一条消息说你可能受到攻击.。只是没有办法让我保存一个文件。您必须配置xdg-打开,即使您只想保存一个文件。我受够了这个。

查看完整回答
反对 回复 2019-07-01
?
FFIVE

TA贡献1797条经验 获得超6个赞

如果客户端想保存它,那么发送哪些标头并不重要(您可以在浏览器中的任何内容上“保存”或“将链接保存为”),因为标题是信息,而不是规则。attachment可以被认为是“最好不要自己展示”inline“如果可以的话最好自己展示”。无论哪种方式,大多数浏览器都会使用文件名值作为文件的建议名称,但是用户总是可以重写它

查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 371 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信