如果没有 ajax,如果我们加载 http://example.com/1
并且如果它重定向到 http://example.com/2
那么浏览器将获得适当的标头并更新浏览器 URL。有没有办法通过 jQuery Ajax 获取这些信息?
例如,我通过 Ajax 请求 http://api.example.com
。在 PHP 中,此页面被重定向到 http://api2.example.com
。这东西有可能知道吗?
使用: 我有一个带有链接的导航栏。所有页面都 通过 AJAX 加载到容器中,我根据链接使用 HTML5 历史将 url 推送到浏览器栏上。
但是,如果页面被重定向,该页面会有一个新链接吗?我也想在浏览器栏中更改它。我想知道 Ajax URL 被重定向到哪里,以防它被重定向。
为什么这很重要? 我的链接处理表单数据、请求和各种身份验证。例如,如果我请求 https://oauth.example.org?code=56hycf86
它会重定向到 success
或 failure
页面。我的 Ajax 获得了正确的 html 内容,但 URL 浏览器栏仍然具有相同的 URL Auth ID
如果重新加载,则会产生错误。还有其他安全问题。
我不知道我是否解释正确,但感谢您的帮助。
原文由 tika 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,不幸的是,ajax 总是遵循重定向。但是,并非所有浏览器都支持一个功能,您可以访问 XMLHttpRequest 对象的 responseURL 属性。
您可以在下面的代码片段中尝试。重定向按钮将 ajax 请求发送到一个 URL,该 URL 回复 1 个重定向(如果有多个重定向,它也有效)。无重定向按钮将 ajax 请求发送到没有重定向的 URL。
据我所知,IE 11 和旧版本的 chrome/firefox/opera 浏览器不支持此方法。