我正在尝试使用 ExpressJS 的 cookie 会话和 AngularJS 实现身份验证。问题是即使我可以让 ExpressJS 发送会话 cookie,Angular 也不会在后续请求中发送它们。
我在 192.168.1.2:3000 运行后端服务器,在 192.168.1.2:3501 运行 yeoman 服务器,所以这里有跨域问题吗?为了让 $http 正常工作,我已经用 ExpressJS 做了正常的 CORS 工作,但我不确定如何让 cookie 工作。
您是否检查过您的请求是在withCredentials
标志设置为的情况下发送的true
吗?
在 Angular 中,这可以通过在 HTTP 请求配置对象中完成,例如
//...
$http.get(myUrl, {withCredentials: true})
//...
或者,如果您不想一直重新配置它,请使用$httpProvider
:
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}]);
要让 angularJS 中的 cookie 工作,您可以点击此链接
我在后端(expressJS)中维护会话变量并将其返回给前端(angularJS)中的$cookies对象。
所以当我注销时,它会删除 angularJS 中的 cookie 和后端的 session 变量。