私はGeckfx22.0
とxulrunner22.0
を使用しています。 .NetのGeckoWebBrowserは他のGeckoWebBrowserの他のインスタンスとCookieを共有しているので、GeckoWebBrowserには他のGeckoWebBrowserや他のインスタンスで以前に作成されたCookieを共有しない独自のCookieコンテナが必要です。これは可能ですか? GeckoFXはインスタンスごとに別々のCookieContainerを使用できますか?
たとえば、GeckoWebBrowserを作成するときにCookieを使用しないでください。そして私がGeckoWebBrowserの2つのインスタンスを実行するとき、彼らは独自のクッキーコンテナを持っていて、お互いにクッキーを共有したり競合したりしません。
どうすれば可能ですか?
異なるクラスを作成してgeckofx
を開始することで、さまざまな方法で試しましたが、同時に別のブラウザを実行しているときに、他のブラウザ間でCookieを共有しています。あるブラウザからCookieを削除すると、他のブラウザでも同じことが起こります。私はproxy
とuseragent
を別々の時間とその動作で開始しましたが、同時に複数のブラウザに対してさまざまなユーザエージェントを適用できません。
public void Initiate()
{
Gecko.Xpcom.Initialize(AppDomain.CurrentDomain.BaseDirectory + "/xulrunner");
if (this.IsProxySet)
{
Gecko.GeckoPreferences.User["network.proxy.http"] = this.Host;
Gecko.GeckoPreferences.User["network.proxy.http_port"] = this.Port;
Gecko.GeckoPreferences.User["network.proxy.type"] = 1;
}
if (IsUseragentSet)
{
Gecko.GeckoPreferences.User["general.useragent.override"] = this.Useragent;
}
}
、私は次のコードを使用していクッキー削除する:
nsICookieManager CookieMan;
CookieMan = Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1");
CookieMan = Xpcom.QueryInterface<nsICookieManager>(CookieMan);
CookieMan.RemoveAll();
ヘルプが理解されるだろうが!
より新しいgeckofxのバージョンが必要? – yasmuru
unittestは、Xpcomサービス "@ mozilla.org/cookieService; 1"の置き換え方法をデモします。 (私はcookiemanagerのために同じことをすることができると思う; 1かcookiemanagerはcookieServiceを使って働くかもしれない)。このように動作して、TestCookieServiceFactoryは "@ mozilla.org/cookieService; 1"の新しい実装を作成します。 (実際の作業は、nsICookieServiceインターフェイスを実装するTestCookieServiceクラスに委任されます)。その後、プログラムの起動時(つまりXpCom.Initの後)に、TestCookieServiceFactory.Unregister()を呼び出して既定のサービスを削除し、Register新しいものをインストールする。 – Tom
あなたの返事をありがとう、私はそれを試してみます.. – yasmuru