【问题标题】:Problems with xmlhttprequest status 302xmlhttprequest 状态 302 的问题
【发布时间】:2011-11-23 08:30:07
【问题描述】:

我正在尝试获取链接 megaupload 中的真实路径,但总是这样,但这不起作用。

function getRealURL(){

    var st = new String(""); 
    var req = new XMLHttpRequest();
    req.open("GET","http://www.megaupload.com/?d=6CKP1MVJ",true);
    req.send(null);
    req.send(null);
    req.onreadystatechange = function (aEvt) {
     if (req.readyState == 4) {
        if(req.status == 302){
          //SUCESSO
           st = req.responseText;
        }
      }
    };//funcao

    element.getElementById("id").setAttribute("value", st);

}

我需要这个链接:

Redirect to: http://www534.megaupload.com/files/c2c36829bc392692525f5b7b3d9d81dd/Coldplay - Warning Sign.mp3

安装了这个:

http://www.megaupload.com/?d=6CKP1MVJ

【问题讨论】:

  • 在我看来这个 URL 存在(返回 200,而不是 302)。如果您需要另一个链接,为什么不直接使用那个链接呢?或者您是否正在尝试为大型上传下载编写一些通用的东西?
  • 是的,我正在尝试。谢谢,工作。

标签: javascript firefox firefox-addon xmlhttprequest


【解决方案1】:

XMLHttpRequest 默认情况下会自动跟随重定向,因此您看不到 302 响应。您需要将nsIHttpChannel.redirectionLimit 属性设置为零以防止它:

req.open("GET","http://www.megaupload.com/?d=6CKP1MVJ",true);
req.channel.QueryInterface(Components.interfaces.nsIHttpChannel).redirectionLimit = 0;
req.send(null);

并不是说您在此处使用的链接会重定向到任何地方,但这是一般方法。顺便说一句,您应该查看req.getResponseHeader("Location"),而不是查看重定向的响应文本。

【讨论】:

  • 这似乎不再起作用了。在 Chrome (29.0) 中,我得到 Uncaught ReferenceError: Components is not defined,在 Firefox (24.0) 中,我得到 TypeError: xhr.channel is undefined。此外,组件上的 MDN 页面说您不应该再使用它。 developer.mozilla.org/en/docs/Components_object
  • @mflodin:这是一个关于 Firefox 扩展的问题。这段代码在 Chrome 中不起作用并不奇怪。此外,Firefox 中的网页无法访问像 XMLHttpRequest.channel 这样的低级 API 也就不足为奇了。只有特权代码(意味着扩展)才能访问它。
  • @WladimirPalant 啊,对不起。我错过了。有很多关于 302 问题的 Stack Overflow 问题。以后我一定会更仔细地检查标签。
猜你喜欢
  • 2022-01-05
  • 2015-12-29
  • 2011-09-12
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多