表題の通りです。
WebBrowserクラスのDocumentクラスから取得すると、通常のクッキーは取得できても、HttpOnly属性のついているクッキーは取得できません。
本エントリーではその方法を説明します。
方法は簡単で、wininet.dllのInternetGetCookieExを利用して取得します。
コードは以下のような感じです。
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref uint pcchCookieData, int dwFlags, IntPtr lpReserved); private void WebBrowser_Navigated(object sender, NavigationEventArgs e) { uint length = 1024; StringBuilder cookieData = new StringBuilder((int)length); bool result = InternetGetCookieEx( e.Uri.AbsoluteUri, null, cookieData, ref length, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero); if (result && 0 < cookieData.Length) { cookieValueLabel.Content = cookieData.ToString(); } }
結構簡単ですね。
一応実際に動くコードをGithubにも公開しておきますので、良かったら参考にどうぞ。
WebBrowserSampleソリューション内の、CookieAccessibleBrowserプロジェクトが該当のソースになります。
それではまた!