响应 header 时 Content-Type 的目的是什么?

What is the purpose of Content-Type at response header?

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);

Content-Type header 仅表示资源的媒体类型。浏览器可以使用 MIME 嗅探并在某些情况下完全忽略它。为防止这种行为,您可以将 X-Content-Type-Options 设置为 nosniff

出现一个问题:我什至需要设置这个实体 header?如果不设置它,您会强制浏览器每次都嗅探 MIME 类型,因此可能会将响应 body 解释和显示为预期类型以外的内容类型。如果您的服务器允许用户上传文件,则黑客可以通过以一种方式操纵内容来执行 XSS 攻击,以供 Web 应用程序接受并由浏览器呈现为 HTML。他可以注入代码,例如一个图像文件,让受害者通过查看图像来执行它。