我有一个包含以下JavaScript/jQuery代码的网站:
var req = $.ajax({
type: 'GET',
dataType: 'jsonp',
url: 'http://foo.com',
error: function (jqXHR, textStatus, errorThrown) {
// what is the last URL in the redirect flow?
}
});
这是发生了什么:
第1步)
请求
http://foo.com
,返回302,并重定向到http://bar.com
第2步)
请求
http://bar.com
,即,其中不包含有效的JSONP 内容(这是一个HTML文件),因此可以触发req.error()
,这很好。我要达到的目的是从第2步获取URL(
http://bar.com
)。该URL为动态(每次请求后更改)。另请注意,我无法在服务器端执行此请求(这很容易,但是必须是客户端从步骤2中启动该网站)。我可以看到重定向发生在Chrome开发者工具的“网络”标签中(如您所见,实际上是一个三步流程,但为简单起见,可以想象这是我如上所述的两步流程):
注-由于远程服务器不允许CORS,因此我使用JSONP。
最佳答案
由于您使用的是jsonp,因此只能使用Service Worker进行检测。
但这也意味着您和其他站点都需要使用https运行...
原始答案
我不认为xhr可以做到这一点,但是我猜新的fetch api可以(如果我没有记错的话)使用no-core模式无法正常工作。最终网址需要启用cors ...
fetch('https://httpbin.org//redirect/1').then(res => console.log(res.url))
关于javascript - AJAX : How to get the last URL in a redirect flow inside an error handler with JSONP as content-type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40368895/