我正在通过 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 标题。这是响应中的 cookie 标头:
Set-Cookie:auth=some-value-here; 过期=格林威治标准时间 2013 年 3 月 25 日星期一 20:39:43;域=/
我试图从 IIS 运行它,所以它不是 localhost-something - 没有帮助。
它不是 CORS,同一台服务器,ajax 调用是对“/api/blah”类型的地址进行的。
任何想法我错过了什么?