Javascript XMLHTTPRequest响应在标头中不包含位置字段

Javascript XMLHTTPRequest响应在标头中不包含位置字段,javascript,xmlhttprequest,firefox-addon,http-get,adblock,Javascript,Xmlhttprequest,Firefox Addon,Http Get,Adblock,我试图修改adblockplus代码以进行测试。我正在修改代码,以便在URL上发送http get请求,并从响应中获取最终URL。我尝试使用下面的代码,但响应中不包含标题响应中的位置字段。我在firefox扩展中这样做,所以我认为跨域请求不会有任何问题。为什么我不能从响应中获取位置字段?有没有更好的方法来完成这项任务 输入URL- 预期产量- 实际输出-位置:null 这是我正在使用的代码- function geturl(url){ let req= Cc["@mozilla.org/xmle

我试图修改adblockplus代码以进行测试。我正在修改代码,以便在URL上发送http get请求,并从响应中获取最终URL。我尝试使用下面的代码,但响应中不包含标题响应中的位置字段。我在firefox扩展中这样做,所以我认为跨域请求不会有任何问题。为什么我不能从响应中获取位置字段?有没有更好的方法来完成这项任务

输入URL-

预期产量-

实际输出-位置:null

这是我正在使用的代码-

function geturl(url){
let req= Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
req.open("GET", url);
req.overrideMimeType("text/plain");
req.send(null);
req.onreadystatechange = function() {
if (req.readyState == 4) 
{ if (req.status == 200) 
  { try 
    {
       location = req.getResponseHeader("Location");
       console.log("Location is: " + location);
    }
    catch(e){
    console.log("Error reading the response: " + e.toString());
  }
 }
}
解决方案-

我终于找到了解决办法。我没有得到最后的答复。所以我将重定向限制设置为0,现在我可以在标题中获取位置字段。 下面是我添加到代码中的内容-

if (request.channel instanceof Ci.nsIHttpChannel)
    request.channel.redirectionLimit = 0;

因为状态代码200表示OK,所以不会执行try块。“位置”字段仅在重定向中存在,状态代码为301或302


url响应302,因此将
req.status==200
更改为
req.status==302
实际上,您必须检查
readyState==2
,也就是HEADERS\u RECEIVED state

,但状态代码200表示请求成功,因此,HTTP响应应该包含位置字段,即使它可能不是重定向。不,您可以使用httpfox扩展或命令
curl-i
来检查标题。是的,实际上它正在重定向到该页面,因此我无法获取位置字段。知道怎么解决吗?状态代码200 OK没有位置字段。尝试
curl-ihttp://httpbin.org/user-agent
在您的终端中。只需将
200
更改为
302