3

ajax(angularJsですが、jQueryも試しました)を介してサーバーを呼び出しています。応答にCookieが含まれていますが、そのCookieは何らかの理由でクライアントに保持されていません。応答にSet-cookieヘッダーが表示されますが、CookieはChromeの開発ツールに表示されず、サーバー上の後続のリクエストでも使用できません。

これはサーバーコードです(これはWebAPIです):

HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Headers.AddCookies(new[] { new CookieHeaderValue("auth", "my cookie content") { Expires = DateTime.Now.AddDays(7), Domain = "/" } });
IContentNegotiator negotiator = Configuration.Services.GetContentNegotiator();
ContentNegotiationResult result = negotiator.Negotiate(typeof(LoggedInModel), Request, Configuration.Formatters);
response.Content = new ObjectContent<LoggedInModel>(new LoggedInModel { Email = model.Email }, result.Formatter);
return response;

それには何もありません、本当に、そして再び、私はクッキーヘッダーを見ることができます。これは、応答のCookieヘッダーです。

Set-Cookie:auth = some-value-here; Expires = Mon、2013年3月25日20:39:43 GMT; ドメイン=/

私はこれをIISから実行しようとしたので、ローカルホストではありません-何か-は役に立ちません。

これはCORSではなく、同じサーバーであり、「/ api/blah」タイプのアドレスに対してajax呼び出しが行われます。

私が欠けているアイデアはありますか?

4

1 に答える 1

-1

Cookie にパスを設定する必要がありました... 基本的に、Cookie を作成するときは、必ずパス プロパティを設定してください。

var cookie = new CookieHeaderValue("auth", "blah") { Expires = DateTime.Now.AddDays(7), Path = "/", HttpOnly = true };

繰り返しますが、これは Web API です。MVC はデフォルトでこれを設定します。少なくとも、Cookie を作成するときにパスを指定する必要はありませんでした。

于 2013-03-19T15:24:09.093 に答える