为什么有些图片会在 URL 被访问时自动下载,而有些则不会?
Why do some images automatically download when their URL is visited and others not?
我觉得我应该能解决这个问题,但我做不到。
此图片尝试下载(在我测试的浏览器中:safari 和 chrome):
https://d3i71xaburhd42.cloudfront.net/9470b0dc3daccafa53ebe8f54d5bfed00afce2ce/29-Figure13-1.png
而这一张(以及大多数其他图片)会自动出现在浏览器中:
https://i.imgur.com/TvqM9Gp.png
这两个图像完全是任意示例;显然还有更多的例子可以指出。根据我的经验,大多数图像会自动显示在浏览器中,但偶尔有人想下载到 'downloads' 文件夹或其他熟悉的位置,我不太清楚为什么会这样。
是什么原因导致某些图像可以下载,而另一些图像可以通过浏览器自动打开并可以在浏览器中查看?
这通常是由两个 HTTP 响应 header 之一引起的。
Content-Disposition
这 header 告诉浏览器应该显示响应的内容 inline
(默认值)或作为 attachment
。后者会导致浏览器下载响应。
Content-Type
这告诉浏览器响应包含什么样的内容。根据内容类型,浏览器知道应该如何处理响应。例如 text/html
将导致浏览器将响应视为 HTML 并将其呈现。 text/plain
将导致响应显示为简单的文本文件,image/jpeg
将导致响应显示为图像,binary/octet-stream
将告诉浏览器,“这是二进制数据",这通常会导致浏览器下载文件。 MIME-types 的名单还在继续。
如果下载图像而不是在浏览器中显示图像,并且它没有 Content-Disposition
响应 header 设置为 attachment
,通常意味着 Content-Type
设置不正确。对于您提供的第一张图片,Content-Type
设置为 binary/octet-stream
,因此浏览器不会将其视为图片。
我觉得我应该能解决这个问题,但我做不到。
此图片尝试下载(在我测试的浏览器中:safari 和 chrome):
https://d3i71xaburhd42.cloudfront.net/9470b0dc3daccafa53ebe8f54d5bfed00afce2ce/29-Figure13-1.png
而这一张(以及大多数其他图片)会自动出现在浏览器中:
https://i.imgur.com/TvqM9Gp.png
这两个图像完全是任意示例;显然还有更多的例子可以指出。根据我的经验,大多数图像会自动显示在浏览器中,但偶尔有人想下载到 'downloads' 文件夹或其他熟悉的位置,我不太清楚为什么会这样。
是什么原因导致某些图像可以下载,而另一些图像可以通过浏览器自动打开并可以在浏览器中查看?
这通常是由两个 HTTP 响应 header 之一引起的。
Content-Disposition
这 header 告诉浏览器应该显示响应的内容 inline
(默认值)或作为 attachment
。后者会导致浏览器下载响应。
Content-Type
这告诉浏览器响应包含什么样的内容。根据内容类型,浏览器知道应该如何处理响应。例如 text/html
将导致浏览器将响应视为 HTML 并将其呈现。 text/plain
将导致响应显示为简单的文本文件,image/jpeg
将导致响应显示为图像,binary/octet-stream
将告诉浏览器,“这是二进制数据",这通常会导致浏览器下载文件。 MIME-types 的名单还在继续。
如果下载图像而不是在浏览器中显示图像,并且它没有 Content-Disposition
响应 header 设置为 attachment
,通常意味着 Content-Type
设置不正确。对于您提供的第一张图片,Content-Type
设置为 binary/octet-stream
,因此浏览器不会将其视为图片。