<img> 标记对所有 Http 4XX 错误的响应是否与 404 相同?

Does an <img> tag respond to all Http 4XX errors the same as 404s?

编辑:为了澄清我的问题,以下是我试图理解的内容。

如果网页嵌入了这样的图片:

`<img src="...">`

浏览器如何处理从图像接收不同的 HTTP 错误状态代码 url?它在浏览器中是否非常一致,并且基本上被视为图像不存在 (404)?

请注意,我知道我可以 "just try it",但我没有每个 browser/os/phone 都可以尝试,我想了解它的实际工作原理在相当现代的桌面和移动浏览器中(~IE9 和更新的模糊线)。另外,如果其他人也想知道同样的事情,他们也可以来这里看看答案 ;-)

原始问题:

我正在实施一项 REST 服务,可以 returns 安全地为客户提供图像和视频。

我在想针对不同类型的故障发送不同的 HTTP 响应代码会很好:

从 HTML 和 Javascript 的角度来看,使用这些不同的错误代码进行响应是否与所有合理的现代浏览器的 404 响应完全相同?

我知道错误代码当然会有所不同,但我要确保的是没有奇怪的安全错误由于使用这些不同的 HTTP 响应而弹出。

既然您使用的是 REST,我假设您使用的是 Ajax 或 Angular 来请求您的图片,对吗? 在这种情况下,由 javascript 来捕获错误。因此,当 javascript 正确处理时,您的浏览器将不会显示任何弹出窗口。 您可以从

之类的内容开始
$.ajaxSetup({
    statusCode: {
      401: function(err){
        console.log('Login Failed.', err.responseJSON);
        // or whatever...
      }
    }
  });

请注意,401 错误可以在响应的 header 中找到,并替换 'Content-Type: image/png' header。所以客户端(浏览器)无法知道是否请求了图像并像处理其他页面一样处理它。

很多 public API 都会给出 403,例如,当具有临时访问时间的对象过期时,Amazon 的 S3 服务会以 403 响应。

例如像这样的 url 将生成具有以下响应的 403(注意:以下不是有效的 S3 url... keys/signature 已更改)

https://somebucket.s3.amazonaws.com/test/4a828d8cf5633ab41e2fb8deba599178.jpg?AWSAccessKeyId=ACIAICGLRMBL2PTLALHQ&Expires=1424782953&Signature=sWko4DDDRaBS151iEhEZzfDRbU%3D

<Error>
<script/>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<Expires>2015-02-24T13:02:33Z</Expires>
<ServerTime>2015-02-24T13:02:55Z</ServerTime>
<RequestId>F4949A0376EC9DCD</RequestId>
<HostId>
BV8KMzUcmymBUWctoB8mzFAhzcCAMil/F3NXP/KyKxJd/Hun6O2lUh4b0BsVcP9iwjL1sJxreug=
</HostId>
</Error>