トップ回答者
WebBrowserコントロールの継承先からクッキーを取得したい

質問
-
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowser.createsink.aspx
を参考に、WebBrowserの継承をして、
ブラウザ内でエラーを取得できるようにしてみましたエラーを取得すること自体は、特に問題も無く(ソースを丸ごとコピーして、こちらの都合のいい名前に変えただけですが)
ところが、どういうわけか、クッキーが取得できなくて困っています
private WebBrowser2 wb = new WebBrowser2();
public Form1
{
wb.Navigate("http://hoge.com");
}public void foo()
{
//クッキーを発行するページにアクセスした後に、
string co=wb.Document.Cookie;
}以上のようにしても、coには、nullが取得されてしまいます
public string ccc
{
get { return this.Document.Cookie; }
}と、試しに、クラス内に無理矢理変なプロパティを作ってみても、やはりクッキーにはnullしか取得できませんでした
ブラウザの動作を観察していると、サーバとはちゃんとクッキーのやりとりをしているのですが(Tempolary Internet Filesにもちゃんとクッキーは入っている)、
Document.Cookieにはnullのままでした。何か継承の仕方がまずいのでしょうか
(AxHost.ConnectionPointCookie cookie;を削除してみましたが、やはりDocument.CookieにはNullのままです)
回答
-
私も WebBrowser.CreateSink メソッド のサンプルコードを参考に試してみました。コードは特に変えてません。接続先は www.microsoft.co.jp にしました。
Navigated イベントで this.Document.Cookie の状態を確認しましたが、問題なく取得できてますね。
protected override void OnNavigated(WebBrowserNavigatedEventArgs e) { base.OnNavigated(e); Debug.WriteLine(this.Document.Cookie); }
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年7月18日 8:21
- 回答の候補に設定 山本春海 2012年8月1日 8:43
- 回答としてマーク 山本春海 2012年8月2日 9:01
-
検証してないのでハズレかもしれませんが・・・
> 開発中の特定のサイトだけ、クッキーが取得できないようでした
取得できないのは、HttpOnly 属性を持つ Cookie ではないのですか? 例えば、ASP,NET
のセッションクッキー(下記例参照)がそれに該当しますSet-Cookie: ASP.NET_SessionId=ucbcgym5gpldgweryo5hhzlu; path=/; HttpOnly
そのことはこのあたり ↓ に書いてあります。
Retrieve HttpOnly Session Cookie in WebBrowser
http://www.codeproject.com/Articles/38616/Retrieve-HttpOnly-Session-Cookie-in-WebBrowserWebBrowser and HttpWebRequest Cookies Problem and Solution
http://ycouriel.blogspot.jp/2010/07/webbrowser-and-httpwebrequest-cookies.html
すべての返信
-
私も WebBrowser.CreateSink メソッド のサンプルコードを参考に試してみました。コードは特に変えてません。接続先は www.microsoft.co.jp にしました。
Navigated イベントで this.Document.Cookie の状態を確認しましたが、問題なく取得できてますね。
protected override void OnNavigated(WebBrowserNavigatedEventArgs e) { base.OnNavigated(e); Debug.WriteLine(this.Document.Cookie); }
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年7月18日 8:21
- 回答の候補に設定 山本春海 2012年8月1日 8:43
- 回答としてマーク 山本春海 2012年8月2日 9:01
-
検証してないのでハズレかもしれませんが・・・
> 開発中の特定のサイトだけ、クッキーが取得できないようでした
取得できないのは、HttpOnly 属性を持つ Cookie ではないのですか? 例えば、ASP,NET
のセッションクッキー(下記例参照)がそれに該当しますSet-Cookie: ASP.NET_SessionId=ucbcgym5gpldgweryo5hhzlu; path=/; HttpOnly
そのことはこのあたり ↓ に書いてあります。
Retrieve HttpOnly Session Cookie in WebBrowser
http://www.codeproject.com/Articles/38616/Retrieve-HttpOnly-Session-Cookie-in-WebBrowserWebBrowser and HttpWebRequest Cookies Problem and Solution
http://ycouriel.blogspot.jp/2010/07/webbrowser-and-httpwebrequest-cookies.html