ユーザーを認証した後、ユーザーに Cookie を送信しようとしています。すべてが完璧に機能し、コードで応答が構築されていますが、クライアントが応答を受け取った後でも、ブラウザーに Cookie が保存されていません (chrome F12 -> Resources で確認します)。
注:応答が私のクッキーでフィドラーで送信されているのを見ることができます:
何がうまくいかないのか、ブラウザが Cookie を保存しないのはなぜだろうか。
Post リクエストを処理する WebAPI 関数は次のとおりです。
public HttpResponseMessage Post([FromBody]User user)
{
IDal dal = new ProGamersDal();
var currentUser = dal.GetUser(user.Username, user.Password);
if (currentUser == null)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bad request.");
}
else
{
var res = new HttpResponseMessage();
var cookie = new CookieHeaderValue("user",JsonConvert.SerializeObject(new ReponseUser(){username = currentUser.Username, role = currentUser.Role}));
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
res.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return res;
}
}