6

我有一些<img>链接(带有src属性)到可能需要重定向到其他图像 URL 的跨域 URL。我需要以某种方式跟踪浏览器请求原始 URL 时发生的每个重定向。

例如,如果我有:

<img src='http://www.something.com/redirect'/>

并将http://www.something.com/redirect自定义location标头发送到http://something.com/pic.jpg,我需要了解它。如何在 JS 或 jQuery 中检测重定向<img>

4

4 回答 4

1

如果您不受 IE7 的限制,则可以使用 cors 解决方案。这将让您请求跨域而不受 JSON-P 的限制(即您可以获得状态代码)。

有关更多信息,请参阅https://developer.mozilla.org/en/http_access_control。对于一个简单的 GET 请求,您应该没问题,但如果您需要 POST,那么您可能需要预检您的请求。

于 2012-07-30T05:05:08.993 回答
1

我认为这不太可能(当然我不是专家,但那是 AFAIK),至少不像人们想象的那样直截了当。

这是我认为尽可能接近您正在寻找的东西,我希望它能给您一些想法

var req = new XMLHttpRequest();
$('img').each(function() {
    req.open('GET', $(this).prop('src'), false);
    req.send(null);
    alert(req.status);
});

两个下边:

  1. 仅适用于同一域上的图像。
  2. 您必须两次请求图像(或者您可以先请求,然后使用结果显示图像)
于 2012-07-26T06:39:40.503 回答
1
<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>
于 2012-07-26T07:23:45.353 回答
0

如何使用 Ajax 加载图像,未经测试的伪代码如下:

HTML:

<img id="img1" src="blank.gif">

查询:

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 加载它。

于 2012-07-31T09:56:50.983 回答