阅读http标题以获取扩展名

时间:2013-07-16 17:06:18

标签: javascript firefox http-headers firefox-addon

我想通过使用http-on-modify-request获取http请求时获取http标头的完整信息。

我想要获得的信息示例:

enter image description here

我有这段代码:

myObserver.prototype = {
 observe: function(subject, topic, data) {

  if("http-on-modify-request"){
    var httpChannel =        
  subject.QueryInterface(Components.interfaces.nsIHttpChannel);
        alert("URI: " + httpChannel.originalURI.spec);
        alert("User-Agent: " + httpChannel.getRequestHeader('user-agent'));
  }

},
 register: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
                      .getService(Components.interfaces.nsIObserverService);
observerService.addObserver(this, "http-on-modify-request", false);
 },
unregister: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
                        .getService(Components.interfaces.nsIObserverService);
observerService.removeObserver(this, "http-on-modify-request");
 }
}

3 个答案:

答案 0 :(得分:0)

我的两分钱。

IN JAVASCRIPT

FIDDLE DEMO

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
console.log(headers);
alert(headers)

在PHP中

<?php echo $_SERVER["HTTP_REFERER"]; ?>

答案 1 :(得分:0)

我从来没有使用过一种方法来同时获取它们,但你应该能够按照自己的方式单独获取它们。

我也为引用者尝试过,但它没有用,但我发现如果你这样做:

 httpChannel.referrer.host 

(推荐者有两个r),它显示了引用者的地址。

此外,您可能需要查看httpfox的源代码,它会执行您要执行的操作。

您可以在此链接中找到其他帮助:nsITraceableChannel, Intercept HTTP Traffic | Software is hard

这一个:Howto: XHR Listening by a Firefox Addon

答案 2 :(得分:0)

您的观察功能应如下所示:

observe: function(subject, topic, data) {

  if (topic === "http-on-modify-request") {

    var channel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
    alert("URI: " + channel.URI.asciiSpec);

    channel.visitRequestHeaders(function(name, value) {

      // do something with each header
      if (name === 'User-Agent')  {

        alert(name+': '+value);
      }
    });
  }
},