编辑:为了澄清我的问题,这是我想要了解的内容。
如果网页嵌入了这样的图片:
`<img src="...">`
浏览器如何处理从图片网址接收不同的HTTP错误状态代码?它是否在浏览器中非常一致,并且基本上对待图像不存在(404)?
请注意,我知道我可以“只是尝试一下”,但我没有每个浏览器/操作系统/手机都可以尝试一下,我想了解这实际上是如何合理的现代桌面和移动浏览器(~IE9和更新的模糊线)。另外,如果其他人都想知道同样的事情,他们也可以来这里看看答案; - )
原始问题:
我正在实施一项REST服务,可以为客户安全地返回图像和视频。
我认为为不同类型的故障发送不同的HTTP响应代码会很好:
对于所有合理的现代浏览器,从HTML和Javascript角度来看,使用这些不同的错误代码进行响应是否与404响应完全相同?
我知道错误代码当然会有所不同,但我要确保的是 没有出现任何奇怪的安全错误 因使用这些错误而弹出不同的HTTP响应。
答案 0 :(得分:1)
由于您正在使用REST,我假设您使用Ajax或Angular来请求您的图像,对吧? 在这种情况下,由javascript来捕获错误。因此,当javascript正确处理时,您的浏览器不会显示任何弹出窗口。 你可以从像
这样的东西开始$.ajaxSetup({
statusCode: {
401: function(err){
console.log('Login Failed.', err.responseJSON);
// or whatever...
}
}
});
注意,401error可以在响应的标题中找到,并替换'Content-Type:image / png'标题。因此,客户端(浏览器)无法知道是否请求了图像并像任何其他页面一样处理它。
答案 1 :(得分:1)
403由许多公共API提供,例如,当具有临时访问时间的对象到期时,亚马逊的S3服务以403响应。
e.g。像这样的网址会产生403以及以下响应(注意:以下不是有效的S3网址...密钥/签名已更改)
<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>