遵循XMLHttpRequest中的重定向(302)

时间:2013-09-08 03:02:01

标签: javascript google-drive-api xmlhttprequest

使用Firefox我尝试使用Google DriveXMLHttpRequest下载一些数据。在调试控制台中它给我[302 Moved Temporarily],我收到的数据是空的。如何让XMLHttpRequest遵循重定向回复?如果它改变了,我也会使用https。

1 个答案:

答案 0 :(得分:3)

很容易使用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();
}