【发布时间】:2011-10-09 16:54:20
【问题描述】:
我知道重定向是自动进行的,并且我几乎/无法控制该过程。这很好,但我仍然对我的请求最终的结果非常感兴趣。是否可以看到我的请求最终在哪个 url 结束?
我确实不想依靠返回的 HTML 本身来告诉我我在哪里。
示例代码:
var originalURL = '/this/will/be/redirected';
$.ajax({
url: originalURL,
dataType: "html",
success: function(data, statusText, jqXHR) {
var endPointURL = insertMagicHere();
alert("Our query to " + original + " ended up at " + endPointURL + "!");
}
});
我正在 jqXHR 中寻找它,但到目前为止还没有运气。 (不过,我对这一切都很陌生,可能就在我眼皮子底下)
【问题讨论】:
-
this existing StackOverflow question 能帮你解决吗?可悲的是,如果不进行某种服务器端修改来捕获重定向的位置,似乎是没有办法的。
-
同意。根据 XHR 规范,重定向是静默处理的。在我的测试中,302 甚至不会触发
readystatechange! -
简短的回答:不仅仅在 jQuery 中。上次我尝试时,即使注册所有可用的事件侦听器也不允许我检测到重定向。你可能想要一个非跨浏览器的解决方案(即一个小的 Flash 电影和可能的 crossdomain.xml)。
-
@chuck:你这样做的真正意图是什么,如果你能告诉我们,可能还有其他方法可以做到这一点。您是否正在为未经授权的页面进行重定向??
-
您最好的选择似乎是通过中间服务器路由所有此类请求,跟踪重定向,然后将响应和 endPointURL 返回到客户端。也就是说,如果预期的应用程序完全是客户端的,那可能是不切实际的。
标签: javascript jquery ajax http redirect