在所有向GeckoFx发送的请求中添加HTTP头

3
我正在尝试找到一种方法,通过geckoFX添加自定义http头到所有请求中。我尝试使用以下方式添加头部:
GeckoMIMEInputStream strea=new GeckoMIMEInputStream();
strea.AddHeader("head","val"); 
geckoWebBrowser1.Navigate("http://google.com",GeckoLoadFlags.None,"",null,strea);

我需要一种方法,在访问网页时向所有请求添加自定义标题。

谢谢。
2个回答

1
您可以使用ObserveHttpModifyRequest事件:
var browser = new GeckoWebBrowser();
browser.UseHttpActivityObserver = true;
browser.ObserveHttpModifyRequest += 
    (sender, e) => e.Channel.SetRequestHeader(name, value, merge: true);

如需更多信息,请查看 MDN 上的 nsIRequestnsIHttpChannel 页面。


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

request.SetRequestHeader(name, value, merge); 中,如何设置 namevalue?如何将字符串转换为 Gecko.nsACStringBase - FireFalcon
1
var name = new nsACString(name_string); - vmas
还有,我该如何从请求中获取特定的头信息?我尝试了 request.GetRequestHeader(name, strRef);,但它抛出了一个异常:ClassFactory无法提供所请求的类 - FireFalcon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接