向 GeckoFx 的所有请求添加 http header

Add http header to all requests to GeckoFx

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

添加 header
GeckoMIMEInputStream strea=new GeckoMIMEInputStream();
strea.AddHeader("head","val"); 
geckoWebBrowser1.Navigate("http://google.com",GeckoLoadFlags.None,"",null,strea);

我需要一种方法来为访问网页时发出的所有请求添加自定义 header。 谢谢

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

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);

您可以使用 ObserveHttpModifyRequest 事件:

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

有关详细信息,请查看 MDN 上的 nsIRequest and nsIHttpChannel 页面。