【问题标题】:Follow redirect (302) in XMLHttpRequest遵循 XMLHttpRequest 中的重定向 (302)
【发布时间】:2013-09-11 20:45:16
【问题描述】:

使用Firefox 我正在尝试使用XMLHttpRequestGoogle Drive 下载一些数据。在调试控制台中,它给了我[302 Moved Temporarily],我收到的数据是空的。我怎样才能让XMLHttpRequest 跟随重定向响应?如果它改变了事情,我也会使用 https。

【问题讨论】:

  • XMLHttpRequest 将自动跟随重定向。您要检索什么数据?
  • stackoverflow.com/a/20854800/1531945 如果是 CORS 请求,可能会有答案
  • 请注意,重定向和重定向到的页面可能都需要 CORS(使用重定向,如 POST,它可能根本不起作用,请参阅其他 cmets 中的链接答案)。

标签: javascript google-drive-api xmlhttprequest


【解决方案1】:

基本上,您可以使用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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-10
    • 2013-08-15
    • 2015-06-07
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多