通过angularjs从Web Api设置cookie

时间:2013-03-03 23:44:01

标签: angularjs asp.net-web-api

我正在调用WebApi服务,该服务在响应对象中设置cookie。 该调用是通过$ resource从angularjs进行的 所以这是服务器代码:

CookieHeaderValue cookie = new CookieHeaderValue("Token", "blah") { HttpOnly = true, Expires = DateTime.Now.AddYears(10), Path="/"  };
response.Headers.AddCookies(new CookieHeaderValue[] { cookie });

这很有效,我可以在响应中看到Set-Cookie标头,但是没有设置cookie。

我的一个朋友在使用jQuery时必须将xhrFields'Credentials设置为true,所以我想知道是否还需要以角度配置?

1 个答案:

答案 0 :(得分:1)

可能会有很多事情发生。

首先,由于您位于不同的域中,因此您可能需要实现CORs (cross origin resource sharing),但似乎请求已成功完成。我不确定为什么会这样,我认为浏览器会阻止它。无论如何,这里有jsfiddle that illustrates using CORs with angularjs to make both $http & $resource个请求。诀窍似乎是配置$ http服务:

 $http.defaults.useXDomain = true;

另一个想法是来自一个域的cookie无法被另一个域访问。这是另一个question on cookies with angularjs,但请求和服务器似乎在同一个域上。以下是对cookie domains的讨论,以及它们的应用方式。

如果可能的话,我会尝试让cookie请求/响应在同一个域上运行,然后将客户端移动到另一个域。