【发布时间】:2014-04-01 06:56:07
【问题描述】:
没有重复的问题
这个问题不是上述问题之一的重复,因为我对服务器响应无法控制,就像上面其他两个问题一样。
我使用$.get将外部文档的内容加载到当前网站中。
但是,我需要此外部文档的最终 URL。在原始 URL 被重定向 (302) 到不同 URL 的情况下,我需要新 URL。
能否使用 jQuery $.get 方法从加载的文档(302 重定向后)获取最终 URL?
更新
根据下面的反馈,我将我的代码更新为这个,但我仍然没有得到最终的 URL:
$.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
但没有最终到达网址。我是不是理解错了?
【问题讨论】:
-
检查使用:
success: function(data, status, xhr) { console.log(xhr.getAllResponseHeaders()); }然后尝试:xhr.getResponseHeader(key)我不确定应该针对哪个“键”进行重定向 -
^^ 那-
jqXHR.getResponseHeader("TM-finalURL")(我相信) -
@Archer 不,我的错,你之前的评论没看够
-
那么你没有办法检测到重定向。它对 JavaScript 完全透明。
-
@SimonFerndriger 正如其他人所说,这是不可能的,因为它发生在 JavaScript 被通知之前。通常这是通过检测服务器端来解决的,它是一个 ajax 调用,并发送一个标头告诉它重定向。如果它是一个总是被重定向到的单个页面(想想登录页面),你可以做一个非常肮脏的修复,并检查返回内容是否有一些决定因素,它现在在登录页面上。但我不推荐这个。
标签: javascript jquery url redirect