XBAP アプリケーション内に WebBrowser コントロール (System.Windows.Forms.WebBrowser + WindowsFormsHost) があります。問題は、Cookie を必要とする Web サイトに「Navigate()」して資格情報を入力すると、WebBrowser が GET (HTTP) メソッドの「Cookie」プロパティに「セッション」番号パラメータを設定せず、ログインが失敗することです。WebBrowser が Cookie (またはセッション Cookie?) を受け入れないのではないかと思います。私はこの方法で IInternetSecurityManager を使用しようとしました:
public static bool TryAllowCookies(Uri uri)
{
IInternetSecurityManager securityManager = (IInternetSecurityManager)new InternetSecurityManager();
int policy = 0;
Guid context = Guid.Empty;
int hr = securityManager.ProcessUrlAction(uri.ToString(),
URLACTION_COOKIES_SESSION | URLACTION_COOKIES_ENABLED | URLACTION_COOKIES |
URLACTION_COOKIES_SESSION_THIRD_PARTY | URLACTION_COOKIES_THIRD_PARTY,
ref policy,
Marshal.SizeOf(policy),
ref context,
Marshal.SizeOf(context),
PUAF_DEFAULT, 0);
return (hr == 0) && policy == URLPOLICY_ALLOW;
}
ProcessUrlAction は常に True を返しますが、機能しません。
WebBrowser コントロールで IInternetSecurityManager を使用する方法の完全な例は見つかりませんでした。代わりに、Windows フォーム アプリケーションの同じコントロールが完全に機能します。
HTTP スニッフィング:
XBAP アプリケーションからの Web ブラウザ (動作しません):
GET /cgi-bin/xxx.xxx HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-xpsdocument, application/x-ms-application, application/x-ms-xbap, application/xaml+xml, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Referer: http://xxx.xxx.xxx.xxx/cgi-bin/yyy.yyy
Accept-Language: it
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0E; .NET4.0C; InfoPath.2)
Host: xxx.xxx.xxx.xxx
Connection: Keep-Alive
Cookie: language=it; user=smith
WINDOWS フォーム アプリケーションからの WEB ブラウザ (WORKS)
GET /cgi-bin/xxx.xxx HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-xpsdocument, application/x-ms-application, application/x-ms-xbap, application/xaml+xml, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Referer: http://xxx.xxx.xxx.xxx/cgi-bin/yyy.yyy
Accept-Language: it
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0E; .NET4.0C; InfoPath.2)
Host: xxx.xxx.xxx.xxx
Connection: Keep-Alive
Cookie: language=en; user=smith; session=2a9cffb0babea74e3432fc9805470faa; current_page=
ありがとう、リカルド