如何使用$ .get()检测服务器重定向

时间:2014-02-28 10:22:44

标签: javascript jquery url redirect

没有重复的问题

这个问题与上面提到的问题不重复,因为我对服务器响应有无控制,因为上述其他两个问题就是这种情况。


我使用$.get将外部文档的内容加载到当前网站。

但是,我需要此外部文档的最终URL。在原始URL被重定向(302)到不同URL的情况下,我需要新的URL。

我可以使用jQuery $.get方法从加载的文档中获取最终的URL(在302重定向之后)吗?


更新

根据下面的反馈,我将我的代码更新为此,但我仍然没有得到最终的网址:

$.get(url, function(html, status, xhr){
    console.log(xhr.getResponseHeader('TM-finalURL')); // result: null
});

使用xhr.getAllResponseHeaders()记录所有响应标头给我(对于具有302重定向的页面)以下结果:

Pragma: no-cache
Date: Fri, 28 Feb 2014 15:30:22 GMT
Server: Apache
X-Powered-By: PHP/5.3.28
Transfer-Encoding: chunked
Content-Type: text/html
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Keep-Alive: timeout=15, max=100
Expires: Thu, 19 Nov 1981 08:52:00 GMT

但没有最终的网址。我在这里听错了吗?

1 个答案:

答案 0 :(得分:11)

查看XHR specification,您可以看到构建为灵活。所有重定向都是透明处理的:

  

如果响应的HTTP状态代码为301,302 ...透明地遵循重定向

使用中间状态代码在JavaScript中不会触发任何事件。只会通知JavaScript最终的HTTP状态和返回的数据,因为这应该是可用的:

  

收到所有HTTP标头后,同步标志为   未设置,响应的HTTP状态代码为 301之一,   302,303,307和308