是一个MIME头声明良好的做法?
我最近一直在研究一个小项目来提供静态文件。 我希望能够提供不同类型的文件,如:
html, jpg, png, pdf, doc...
所有文件似乎在不分配MIME类型的情况下在不同的浏览器中正确显示。
例如,如果我提供图像并声明一个MIME类型,我会在我的node.js代码中写入:
response.writeHead(200, {'Content-Type': 'image/jpg'});
response.end(data);
忽略MIME类型将在不同的浏览器中呈现完全相同的结果:
response.writeHead(200);
response.end(data);
这是我的理解,如果没有在头中声明MIME类型,浏览器将尽最大努力找出它。
根据HTTP规范,'Content-Type'头部不是必需的。
与所有多部分MIME类型一样,每个部分都有一个可选的“Content-Type”,默认为text / plain。
我应该为每个响应声明MIME类型吗? 为什么?
您正在引用MIME RFC。 但在这种情况下, Content-Type
受到RFC 7231的权力,该部分读取(强调我的):第3.1.1.5节:
生成包含有效载荷主体的消息的发送者应该在该消息中生成Content-Type头字段,除非发送者未知所包含表示的预期媒体类型。
实际上,如果你忽略了这个头文件,你将会猜测文件扩展名和魔术字节。 Content-Type
标题将优先于这些标题,并保存客户端的一些工作。
RFC的相关部分如下解决这个问题:
这样做的客户有可能得出错误的结论,这可能会暴露额外的安全风险(例如“特权升级”)。 此外,通过检查数据格式来确定发送者的意图是不可能的:许多数据格式匹配仅在处理语义上不同的多种媒体类型。
您必须设置MIME类型。 客户端确定正在处理的数据的类型非常有用。 与节点无关。 这是http规范。
链接地址: http://www.djcxy.com/p/46855.html