为什么有些图像在访问其 URL 时会自动下载,而另一些则不会?

use*_*745 6 browser safari google-chrome image

我觉得我应该能够解决这个问题,但我做不到。

此图像尝试下载(在我测试的浏览器中:safari 和 chrome):

https://d3i71xaburhd42.cloudfront.net/9470b0dc3daccafa53ebe8f54d5bfed00afce2ce/29-Figure13-1.png

而这一张(以及大多数其他图像)会自动出现在浏览器中:

https://i.stack.imgur.com/Mb5Mp.jpg

这两张图片完全是任意的例子;显然还有很多例子可以举出。根据我的经验,大多数图像会自动显示在浏览器中,但偶尔有人想下载到“下载”文件夹或其他熟悉的位置,我不太清楚为什么会这样。

是什么导致某些图像需要下载,而另一些图像则由浏览器自动打开并可在浏览器中查看?

Iva*_*var 8

这通常是由两个 HTTP 响应标头之一引起的。

Content-Disposition

此标头告诉浏览器应显示响应的内容inline(默认值)或作为attachment. 后者将导致浏览器下载响应。

Content-Type

这告诉浏览器响应包含什么类型的内容。根据内容类型,浏览器知道如何处理响应。例如,text/html将导致浏览器将响应视为 HTML 并将其呈现为 HTML。text/plain将使响应显示为简单的文本文件,image/jpeg将使响应显示为图像,并binary/octet-stream告诉浏览器“这是二进制数据”,这通常会导致浏览器下载文件。MIME 类型的列表不胜枚举。

如果图像被下载而不是显示在浏览器中,并且它没有将Content-Disposition响应标头设置为attachment,则通常意味着Content-Type设置不正确。对于您提供的第一张图像, 被Content-Type设置为binary/octet-stream,因此浏览器不会将其视为图像。