0

当使用 http-on-modify-request 发出 http 请求时,我想获取 http 标头的完整信息。

我想获得的信息示例:

在此处输入图像描述

我有这个代码:

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");
 }
}
4

3 回答 3

0

我的两分钱。

在 JAVASCRIPT

小提琴演示

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"]; ?>
于 2013-07-16T18:14:56.567 回答
0

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

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

 httpChannel.referrer.host 

(referrer 有两个 r),它显示了referer 的地址。

此外,您可能想查看httpfox的源代码,它可以完成您正在尝试做的事情。

您可能会在此链接中找到更多帮助:nsITraceableChannel,拦截 HTTP 流量 | 软件很难

还有这个:Howto: XHR Listening by a Firefox Addon

于 2013-07-16T22:28:56.847 回答
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);
      }
    });
  }
},
于 2016-06-05T07:47:01.180 回答