tik*_*ika 11 javascript ajax jquery
没有ajax,如果我们加载http://example.com/1,如果它重定向到http://example.com/2那么浏览器获得适当的标题并且浏览器URL得到更新.有没有办法通过jQuery Ajax获取此信息?
例如,我http://api.example.com通过Ajax 请求 .在PHP中,此页面被重定向到http://api2.example.com.有可能知道这件事吗?
使用: 我有一个链接的导航栏.所有页面都通过AJAX加载到容器中,我根据链接使用HTML5历史记录在浏览器栏上推送URL.
但是,如果页面被重定向,页面会有一个新的链接吗?我想在浏览器栏中更改它.我想知道在重定向的情况下重定向Ajax URL的位置.
为什么这很重要?
我的链接处理表单数据,请求和各种身份验证.例如,如果我请求,https://oauth.example.org?code=56hycf86则重定向到success或failure页面.我的Ajax获得正确的html内容,但URL浏览器栏仍然具有相同的URL Auth ID,如果重新加载,则会产生错误.还有其他安全问题.
我不知道我是否解释了正确的事情,但谢谢你的帮助.
嗯,不幸的是,ajax总是遵循重定向.但是,有一个功能在所有浏览器中都不受支持,您可以访问XMLHttpRequest对象的responseURL属性.
您可以在下面的代码段中尝试它.重定向按钮将ajax请求发送到回复1重定向的URL(如果有多个重定向,它也可以工作).no redirect按钮将ajax请求发送到没有重定向的URL.
据我所知,IE 11和旧版本的chrome/firefox/opera浏览器不支持此方法.
document.getElementById("no-redirect").addEventListener("click", function() {
testRedirect("https://httpbin.org/get");
});
document.getElementById("redirect").addEventListener("click", function() {
testRedirect("https://httpbin.org/redirect/1");
});
function testRedirect(url) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e) {
if (xhr.status == 200 && xhr.readyState == 4) {
if (url != xhr.responseURL) {
alert("redirect detected to: " + xhr.responseURL)
} else {
alert("no redirect detected")
}
}
}
xhr.open("GET", url, true);
xhr.send();
}Run Code Online (Sandbox Code Playgroud)
<button id="redirect">
Redirect
</button>
<button id="no-redirect">
No Redirect
</button>Run Code Online (Sandbox Code Playgroud)