这个问题与上面提到的问题不重复,因为我对服务器响应有无控制,因为上述其他两个问题就是这种情况。
我使用$.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
但没有最终的网址。我在这里听错了吗?
答案 0 :(得分:11)
查看XHR specification,您可以看到不构建为灵活。所有重定向都是透明处理的:
如果响应的HTTP状态代码为301,302 ...透明地遵循重定向
使用中间状态代码在JavaScript中不会触发任何事件。只会通知JavaScript最终的HTTP状态和返回的数据,因为这应该是可用的:
收到所有HTTP标头后,同步标志为 未设置,响应的HTTP状态代码为不 301之一, 302,303,307和308