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

私はそれらを一度にすべて取得する方法を使用したことはありませんが、あなたが行っている方法で個別に取得できるはずです.

リファラーにも試してみましたが、うまくいきませんでしたが、そうすると:

 httpChannel.referrer.host 

(リファラーには 2 つの r があります)、リファラーのアドレスを示します。

さらに、 httpfoxのソースコードを見たいと思うかもしれません。それはあなたがやろうとしていることをします。

このリンクで追加のヘルプを見つけることができます: nsITraceableChannel, Intercept HTTP Traffic | ソフトウェアは難しい

そしてこれ: Howto: XHR Listening by a Firefox Addon

于 2013-07-16T22:28:56.847 に答える
0

私の2セント。

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

観察関数は次のようになります。

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 に答える