Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

HTTP アクティビティのモニタリング

 

Gecko は nsIHttpActivityObserver インターフェースを含んでおり、コールバックを受け取る形でHTTPトランザクションをリアルタイムにモニタすることができます。

HTTP activity observer を作る

HTTP上のアクティビティを観察するには、コード内で nsIHttpActivityObserver を実装する必要があります。このインターフェースはとても単純で、 nsIHttpActivityObserver.observeActivity() という1つのメソッドを実装するだけです。このメソッドはHTTPチャンネルで対象となるアクションが発生するごとに呼び出されます。

// インターフェースへの参照を定義する
var nsIHttpActivityObserver = Components.interfaces.
nsIHttpActivityObserver; var httpObserver = { observeActivity: function(aHttpChannel, aActivityType, aActivitySubtype, aTimestamp, aExtraSizeData, aExtraStringData) {       if (aActivityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION) {         switch(aActivitySubtype) {           case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER:             // received response header             break;           case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE:             // received complete HTTP response             break;         }       } } };

次に、activity observer を実際に組み込む必要があります。これは nsIHttpActivityDistributor のnsIHttpActivityDistributor.addObserver() メソッドを用いて行います:

var activityDistributor = Components.classes["@mozilla.org/network/http-activity-distributor;1"]
                                    .getService(Components.interfaces.nsIHttpActivityDistributor);
activityDistributor.addObserver(httpObserver);

アクティビティを観察する

観察可能なクラスは2つあります: ソケットレベルで発生するものと、HTTPトランザクションレベルで発生するものです。

観察可能なソケットのアクティビティ

nsIHttpActivityDistributor メソッドに報告されアクティビティが ACTIVITY_TYPE_SOCKET_TRANSPORT の場合、発生したアクティビティの詳細な型を示すアクティビティサブタイプは socket transport status code となります。

観察可能な HTTP のアクティビティ

アクティビティタイプ が ACTIVITY_TYPE_HTTP_TRANSACTION の場合、アクティビティサブタイプは activity subtype 定数 のうちの1つとなります。これらは送信されるHTTPリクエストヘッダやボディ、受信するHTTPヘッダなどを含むHTTPトランザクション全体を観察するための機能も含みます。

参照

ドキュメントのタグと貢献者

 このページの貢献者: yiwasaki
 最終更新者: yiwasaki,