我正在通过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标头:
设置Cookie:AUTH =一些值,这里;到期=周一,2013年3月25日20:39:43 格林威治标准时间;域= /
我试图从IIS运行它,所以它不是localhost-something - 没有帮助。
它不是CORS,相同的服务器,ajax调用是对“/ api / blah”类型的地址。
任何想法我都缺少什么?
答案 0 :(得分:-1)
需要在cookie上设置路径......呃! 基本上,在创建cookie时,请确保设置路径属性:
var cookie = new CookieHeaderValue(“auth”,“blah”){Expires = DateTime.Now.AddDays(7), Path =“/”, HttpOnly = true};
再次,这是web api,我相信MVC默认设置它 - 至少我没有在创建cookie时指定路径。