1

我正在调用 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' withCredentials 设置为 true,所以我想知道是否还需要在 angular 中配置一些东西?

4

1 回答 1

1

可能会发生很多事情。

首先,由于您在不同的域上,您可能需要实现COR(跨源资源共享),但似乎请求已成功发出。我不确定为什么会这样,我认为浏览器会阻止它。无论如何,这里有一个jsfiddle,它说明了使用 COR 和 angularjs 来发出 $http 和 $resource请求。诀窍似乎是配置 $http 服务:

 $http.defaults.useXDomain = true;

另一个想法是来自一个域的 cookie 不能被另一个域访问。Here is another question on cookies with angularjs,但请求和服务器似乎在同一个域上。这是关于cookie 域以及如何应用它们的讨论。

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

于 2013-03-05T18:29:31.000 回答