如何侦听跨域映像请求上的任何301/302重定向状态代码
How to listen for any 301/302 redirect status codes on cross-domain image requests?
我有一些<img>
链接到跨域URLS(具有src
属性),可能需要重定向到其他图像URL。我需要以某种方式跟踪浏览器请求原始URL时发生的每一次重定向。
例如,如果我有:
<img src='http://www.something.com/redirect'/>
http://www.something.com/redirect
向http://something.com/pic.jpg
发送了一个自定义的location
头,我需要了解它。我如何在<img>
上检测JS或jQuery中的重定向?
如果您不受IE7的限制,您可以使用cors解决方案。这将允许您在没有JSON-P限制的情况下请求跨域(即,您可以获得状态代码)。
请参阅https://developer.mozilla.org/en/http_access_control了解更多信息。对于一个简单的GET请求,你应该可以,但如果你需要POST,那么你可能需要预先处理你的请求。
我认为这不太可能(当然我不是专家,但这是AFAIK),至少不像人们想象的那样直截了当。
以下是我认为最接近你想要的东西,我希望它能给你一些想法
var req = new XMLHttpRequest();
$('img').each(function() {
req.open('GET', $(this).prop('src'), false);
req.send(null);
alert(req.status);
});
两面:
- 仅适用于同一域上的图像
- 您必须请求两次图像(或者您可以先请求,然后使用结果显示图像)
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<img id='img' src='' width='200' />
<script type='text/javascript'>
/* our image */
var image = new Image();
$(image).load('yourimage.png', function(response, status, xhr) {
if (xhr.status == 200) {
// image loaded, now display the image
$('#img').attr('src','yourimage.png')
} else {
alert(xhr.status);
}
});
</script>
如何使用Ajax加载图像,未经测试的伪代码如下:
HTML:
<img id="img1" src="blank.gif">
JQuery:
GetImage("http://www.something.com/redirect");
function GetImage(url)
{
$.ajax({
type: "GET",
url: url,
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
ProcessLocationHeader(data);
GetImage(data.redirect);
}
else {
// No redirect means we have the correct image
$("#img1").src = url;
}
}
});
}
由于浏览器会缓存图像,因此不会从服务器twize加载。
相关文章:
- AngularJS$http重定向状态代码
- 重定向到PDF时像素跟踪代码不起作用
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- json代码中的重定向
- 如何调整此代码,以便它将在新选项卡/窗口中打开重定向
- 如何添加将通过执行 JavaScript 代码重定向到另一个页面的动态操作
- 用于按键重定向的 AngularJS 代码应该是服务或指令
- 如何从另一个视图上编写的 JS 代码重定向到控制器,并将 JSON 对象随之传递
- 使用变量和谷歌跟踪代码管理器重写和重定向网址
- 服务器立即返回到 ajax 帖子,而不执行重定向代码
- 如何更改此代码,使其仅在没有鼠标移动时才重定向
- 我正在尝试制作一个nocatsplash页面 - 它使用HTML代码来检查密码并在输入正确的密码时重定向访问者
- 更改我的重定向代码
- 重定向后是否可以继续运行 JavaScript 代码
- 验证代码不起作用,直接重定向到操作路径
- php注销重定向头中断代码
- 发送重定向代码到Facebook共享器
- 通过js页面重定向代码传递多个值
- 我想使用jss页面重定向代码将值发送到另一个页面,我该怎么做呢
- 为什么这个Javascript重定向代码不能在ie8中工作?