将http标头添加到对GeckoFx的所有请求

时间:2015-07-04 22:21:06

标签: c# webbrowser-control geckofx

我正在试图找到一种方法来为通过geckoFX发出的所有请求添加自定义http标头。我尝试使用

添加标题
printf "IP: $(curl -s ifconfig.co/x-real-ip) anything-else\n"

我需要一种方法来添加自定义标头,绝对是去往网页时发出的所有请求。 谢谢

2 个答案:

答案 0 :(得分:1)

您可以实现自己的观察者(nsIObserver接口)来拦截http-on-modify-request通知,并添加标题。

class Observer: nsIObserver
{
    public void Observe(nsISupports aSubject, string aTopic, string aData)
    {
        var request = Xpcom.QueryInterface<nsIHTTPChannel>(aSubject);
        request.SetRequestHeader(name, value, merge);
    }
}

并注册

Xpcom.GetService<nsIObserverService>("@mozilla.org/observer-service;1").AddObserver(new Observer(), "http-on-modify-request", false);

答案 1 :(得分:0)

您可以使用ObserveHttpModifyRequest事件:

var browser = new GeckoWebBrowser();
browser.UseHttpActivityObserver = true;
browser.ObserveHttpModifyRequest += 
    (sender, e) => e.Channel.SetRequestHeader(name, value, merge: true);

有关详情,请查看MDN上的nsIRequestnsIHttpChannel页。