IIS でホストされている WebAPI サービスに基本的な HTTP 認証を実装しようとしています。サーバーとクライアントの間でユーザー関連のデータを送信するために Cookie を使用しようとしています。このコードは、クライアントが Firefox の場合に機能するように見えますが、IE または Chrome を使用している場合、Cookie はサーバーに送り返されません。
私は次のものを持っています。
このような応答メッセージにCookieを追加しています... HttpModule.AuthenticateRequest-eventハンドラーで...
HttpApplication app = sender as HttpApplication;
HttpResponse response = app.Context.Response;
HttpRequest request = app.Context.Request;
HttpCookie c = new HttpCookie("MyCookie", "Hellou!");
c.Expires = DateTime.Now.AddDays(1);
c.Domain = request.Url.Host;
c.Path = "/";
response.Cookies.Add(c);
...またはコントローラの POST アクションで:
CookieHeaderValue chv = new CookieHeaderValue("MyCookie", "Hellou");
chv.Expires = DateTime.Now.AddDays(1);
chv.Domain = Request.RequestUri.Host;
chv.Path = "/";
rmsg.Headers.AddCookies(new CookieHeaderValue[] { chv });
HttpModule.AuthenticateRequest-event ハンドラで、このように Cookie を読んでいます
HttpApplication app = sender as HttpApplication;
HttpRequest request = app.Context.Request;
if (request.Cookies.Count > 0)
{
HttpCookie c = request.Cookies.Get("MyCookie");
if (c != null)
{
// ...
}
}
クッキーコードは正しいですか?Cookie がすべてのクライアントで確実に機能するようにする方法はありますか?