none
WebBrowserコントロールの継承先からクッキーを取得したい RRS feed

  • 質問

  • 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のままです)

    2012年7月18日 7:06

回答

すべての返信

  • WebBrowserコントロールで実際に http://hoge.com にアクセスし、 WebBrowser.Document.Cookie を確認してみましたが、普通に取得できています。何か勘違いをされているのでは?

    2012年7月18日 7:44
  • 私も 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/


    2012年7月18日 8:21
    モデレータ
  • すいません。多分私の勘違いです

    今試していたのですが、
    開発中の特定のサイトだけ、クッキーが取得できないようでした

    ヤフーやグーグルだとちゃんとクッキーが取得できます。

    ただ、クライアントのプログラムから、クッキーが取得できないサイトにしてもどういうわけか、
    サーバ側はちゃんとクライアントからのクッキーの情報を取得して、いるので、何かのルールでクライアントプログラム上からクッキーが取得できなくなるみたいでした

    もう一度整理してみます

    2012年7月18日 8:29
  • 検証してないのでハズレかもしれませんが・・・

    > 開発中の特定のサイトだけ、クッキーが取得できないようでした

    取得できないのは、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-WebBrowser

    WebBrowser and HttpWebRequest Cookies Problem and Solution
    http://ycouriel.blogspot.jp/2010/07/webbrowser-and-httpwebrequest-cookies.html

    2012年7月18日 13:13