Ajax请求,忽略cookie?

时间:2013-03-18 22:46:06

标签: jquery ajax cookies angularjs

我正在通过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”类型的地址。

任何想法我都缺少什么?

1 个答案:

答案 0 :(得分:-1)

需要在cookie上设置路径......呃! 基本上,在创建cookie时,请确保设置路径属性:

  

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

再次,这是web api,我相信MVC默认设置它 - 至少我没有在创建cookie时指定路径。