« nsIWebBrowserPersist の基本的な使い方 (2) ~ persistFlags | [userChrome.js] リアルタイムタブプレビュー » |
nsIWebBrowserPersist の基本的な使い方 (3) ~ 各種ヘッダの追加
リファラを指定する
事前準備として、リファラの URL 文字列から nsIURL オブジェクトを生成する。
var refURL = Cc["@mozilla.org/network/standard-url;1"].createInstance(Ci.nsIURL); refURL.spec = "http://www.itmedia.co.jp/";
saveURI の場合
saveURI メソッドの第3引数 aReferrer に nsIURI オブジェクトを指定することでリファラをセットできる。
Live HTTP Headers で要求時のヘッダを見ると、「Referer: http://www.itmedia.co.jp/」というヘッダが付いている。
wbp.saveURI(url, null, refURL, null, null, file);
saveChannel の場合
nsIHttpChannel の referrer プロパティに nsIURI オブジェクトを指定する。
channel.referrer = refURL;
任意のヘッダを指定する
saveURI の場合
saveURI メソッドの第5引数 aExtraHeaders にヘッダを文字列として指定すると、HTTP要求時にそのヘッダを追加できる。
ヘッダは「Foo: bar
」のような形式で指定する。ただし、既存ヘッダを上書きすることはできず、必ず追加される。
例えば以下のようにすると、「Accept-Encoding: gzip,deflate, xxx」となる。
wbp.saveURI(url, null, null, null, "Accept-Encoding: xxx ", file);
saveChannel の場合
nsIHttpChannel では、 setRequestHeader メソッドで自由にヘッダを追加できる。
第3引数 aMerge を true にすると既存ヘッダを上書きせずに追加し、 false にすると既存ヘッダを上書きする。
channel.setRequestHeader("User-Agent", "HTTP Downloader", false);
以下のようにすると、「Accept-Encoding」ヘッダ自体を送らなくすることができる。
channel.setRequestHeader("Accept-Encoding", null, false);
関連記事
nsIWebBrowserPersist の基本的な使い方 (1) ~ 基本形
nsIWebBrowserPersist の基本的な使い方 (2) ~ persistFlags
nsIWebBrowserPersist の基本的な使い方 (3) ~ 各種ヘッダの追加
nsIWebBrowserPersist の基本的な使い方 (4) ~ POST メソッド
nsIWebBrowserPersist の基本的な使い方 (5) ~ ダウンロード進捗状況
つづく…?