const binary = xxxxx;
res.set('Content-Type', 'image/jpg');
res.send(binary);
上面是返回图像的示例,在快速路线上定义。我不明白的是,尽管我将Content-Type
更改为application/json
,它似乎也可以工作吗?
const binary = xxxxx;
res.set('Content-Type', 'application/json'); //Still returning an image?
res.send(binary);
答案 0 :(得分:2)
Content-Type
标头仅指示资源的媒体类型。浏览器可以使用MIME嗅探,在某些情况下可以完全忽略它。为防止此行为,可以将X-Content-Type-Options
设置为nosniff
。
出现一个问题:我是否还需要设置此实体标头?如果不进行设置,则强制浏览器每次都嗅探MIME类型,从而有可能将响应主体解释和显示为不同于预期类型的内容类型。如果您的服务器允许用户上传文件,则黑客可以通过以某种方式来操纵XSS攻击,以使内容被Web应用程序接受并被浏览器呈现为HTML。他可以将代码注入图片文件,并让受害者通过查看图片来执行。