我正在调用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,所以我想知道是否还需要以角度配置?
答案 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请求/响应在同一个域上运行,然后将客户端移动到另一个域。