2012-04-19 8 views
1

私のC#アプリケーションでは、HTTPWebrequestなどを使用してウェブサイトをナビゲートしています。 WebブラウザーコントロールにWebサイトを表示する必要があります。C#アプリケーションのInternetSetCookieがサブドメインで動作しない

現在のCookieはCookieContainerに保存されます。

次のコードは完璧に機能します。すべてのCookieは、ブラウザによって要求に送信されました。

CookieCollection cookies = ck.GetCookies(new Uri("http://www.abcde.de")); 

foreach (Cookie c in cookies) { 
    if (!InternetSetCookie("http://www.abcde.de", c.Name, c.Value)) 
    throw new Exception("Exception setting cookie: Win32 Error code=" 
    + Marshal.GetLastWin32Error()); 
    } 

    /** Setting header_infos, POST-Data etc **/ 
    webBrowser1.Navigate(link, "_self", parameterbyte, header_infos.ToString()); 

しかし、私は

CookieCollection cookies = ck.GetCookies(new Uri("http://ab.cde.de")); 

などのサブドメインからのCookieを取得する際に有効ではありません「http://ab.cde.de」URL-書式のでIntersetSetCookie機能が例外をスローします。 「http://www.cde.de」または「http://www.ab.cde.de」を試してみると、例外が表示されませんが、ブラウザがリクエスト内の5つのCookieのうちの1つのみを送信し、理由を知らないため、Webサイトが正しく読み込まれません。

私はこれをどのように修正できるか考えていますか?

答えて

0

私はこの動作がセキュリティ上の理由から意図的だと考えています。サブドメイン上のサイトは、メインドメイン上のサイトとはまったく異なる人物によって管理された完全に異なるサーバー上でホストされる可能性があります。 Cookieには機密情報が含まれている可能性があるため、Webブラウザは他の(サブ)ドメインへの送信を防ぎます。

+0

ええ私はすでにそのようなことを考えていました。しかし、InternetSetCookie( "http://abc.de"、...)が動作しない場合、どのようにしてhttp://abc.deにCookieを設定できますか? – Michael

+0

そこに[関連する質問](http://stackoverflow.com/questions/1189638/internet-explorer-xx-yy-website-problem)に。この動作について詳しく説明している[このFAQ](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx)もチェックしてください。 –

関連する問題