xhr 或 jQuery ajax, Post 请求如何获得 303 状态的返回结果

发布于 2022-09-07 12:31:51 字数 2422 浏览 14 评论 0

问题网站
http://www.xingk.cc/forum.php...
需注册,比较麻烦,下面给一个临时账号
账号:爱玩屎的阿拉蕾
密码:Av123456!

问题描述
论坛的网盘地址被加了跳转链,而且是随机生成的,跳转链是使用 303 重定向到网盘。

需求结果
有办法能够获得这个跳转链返回的 303 状态的重定向结果吗?
jQuery 的 success好像只有在stats为200才会执行。
xhr 无论是 onreadystatechange 还是 error 还是 onload,都没有得到重定向的结果。

测试代码
jQuery

    var jq=document.createElement("script");
    jq.src="http://cdn.staticfile.org/jquery/2.1.4/jquery.min.js";
    document.body.appendChild(jq);
    
    function getQueryString(name,url) {
      url=(url&&url.match(/\?.*/).toString())||location.search;
        var reg = new RegExp("(?:^|&)(" + name + ")=([^&]*)(?:&|$)", "i");
        var str = url.substr(1).match(reg);
        if (str != null) return unescape(str[2]);
        return null;
    }
    
$('a[href*="linkFilter.php"]').each(function(){
$.ajax({
url:"linkFilter.php",
type:'post',
traditional:true,
data:this.href.replace(/.+\?(.+)/,'$1')+"&mod=decode",
contentType:"application/x-www-form-urlencoded",
processData: false,
success:function(e,s,t,d){
console.log(s,t,e);
},
})
})

图片描述

原生 xhr

var url=document.querySelector('a[href*="linkFilter.php"]').href;
        function getQueryString(name,url) {
          url=(url&&url.match(/\?.*/).toString())||location.search;
            var reg = new RegExp("(?:^|&)(" + name + ")=([^&]*)(?:&|$)", "i");
            var str = url.substr(1).match(reg);
            if (str != null) return unescape(str[2]);
            return null;
        }
var xhr= new XMLHttpRequest();
    //异步接受响应
    xhr.onreadystatechange = function(e){
console.log(xhr.readyState, xhr.status, e, xhr.responseURL);
    }
xhr.onload= function(e){
console.log('load', e, xhr.responseURL);
}
xhr.onerror = function(e){
console.log('error', e, xhr.responseURL);
}
    //发送请求
    xhr.open('post','linkFilter.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');
xhr.send("mod=decode&"+getQueryString('code',url)+"&"+getQueryString('tk',url));

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疑心病 2022-09-14 12:31:51

原生的XMLHttpRequest可以利用 request.readyStaterequest.status进行判断。

南城旧梦 2022-09-14 12:31:51

既然要 success 里找不到你要的东西,为啥不试试 fail 或者 complete 呢

书间行客 2022-09-14 12:31:51

XMLHttpRequest.responseURL属性返回经过任意多次重定向后的最终URL。

https://developer.mozilla.org...

那个CORS错误是肯定有的,可以不管。不过我猜你是想做个自己用的脚本?浏览器插件会给跨域xhr给你用,不过我推荐轻量的油猴脚本。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文