javascript - AJAX : How to get the last URL in a redirect flow inside an error handler with JSONP as content-type

标签 javascript jquery ajax error-handling jsonp

我有一个包含以下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开发者工具的“网络”标签中(如您所见,实际上是一个三步流程,但为简单起见,可以想象这是我如上所述的两步流程):
enter image description here

注-由于远程服务器不允许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/

相关文章:

javascript - react 路由器位置不匹配任何路线

javascript - 强制布局内部强制布局 : How to drag inner nodes

javascript - 如何在我的幻灯片上设置 iframe 视频?

jquery - 根据条件排除点击事件?

jQuery live/delegate/on 与重新注册事件处理程序 - 哪个对 AJAX 更好?

php - 如何在 jquery-ajax 中发布值数组?

javascript - 为什么js中forEach不断递增?但在控制台看起来很完美。

jquery 背景填充 100% 屏幕,但切断了图像的一部分

javascript - 使用 vanilla javascript 延迟后添加类

javascript - 是否可以检查在 HTML 页面中加载了多少字节?