在XMLHttpRequest中跟随重定向(302)

22

我正在使用 Firefox 下载来自 Google Drive 的一些数据,使用的是 XMLHttpRequest。在调试控制台中,它显示了 [302 Moved Temporarily] 并且我收到的数据为空。如何让 XMLHttpRequest 跟随重定向响应?另外,我正在使用 https,如果有改变该怎么做?


2
XMLHttpRequest会自动跟随重定向。您正在尝试检索哪些数据? - Khanh TO
1
如果这是CORS请求,https://dev59.com/FGQo5IYBdhLWcg3wBLjy#20854800 可能有答案。 - Konstantin Pelepelin
2
请注意,您可能需要为重定向和被重定向的页面都使用CORS(对于像POST这样的重定向,它可能根本无法工作,请参阅其他评论中链接的答案)。 - rogerdpack
1个回答

7

基本上您可以使用xhr.getResponseHeader("Location")来获取位置信息。在这种情况下,您只需使用相同的参数向此位置发送另一个XMLHttpRequest

function ajax(url /* ,params */, callback) {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
      // return if not ready state 4
      if (this.readyState !== 4) {
        return;
      }

      // check for redirect
      if (this.status === 302 /* or may any other redirect? */) {
        var location = this.getResponseHeader("Location");
        return ajax.call(this, location /*params*/, callback);
      } 

      // return data
      var data = JSON.parse(this.responseText);
      callback(data);
  };
  xmlhttp.open("GET", url, true);
  xmlhttp.send();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接