我尝试使用ngCookies提供的$ cookies服务检索Cookie,但我一直未定义,我真的不知道它的错误。 。 我可以清楚地看到Chrome中Dev开发者控制台中显示的Cookie。 我还设置了一个XSRF-TOKEN cookie,Angular的$ http不包括它作为标题(X-XSRF-TOKEN),我认为它是同样的问题。
Laravel默认加密Cookies并且非常长,可能就是这样吗?
如果我使用$ cookies服务设置一个cookie,它会出现,我可以随意检索它,所以$ cookies服务正在运行....:P
angular.module("MachinatorApp.Services.SectionService", [])
.factory("SectionService", ["$http", "$cookies", function($http, $cookies) {
console.log($cookies.laravel_session);
var doRequest = function(action, id) {
var params = $.param({
"action" : action,
"id" : id
});
return $http({
method : 'POST',
url : "/Sections/" + action,
data : params,
headers : {'Content-Type': 'application/x-www-form-urlencoded'}
});
}
return {
sections: function(action, id) {
return doRequest(action, id);
}
}
}]);
答案 0 :(得分:1)
我通过查看Laravel API文档找到了解决方案,默认情况下Cooke :: make()发送一个HttpOnly cookie,这就是为什么我无法从Angular中读取它,为httpOnly添加false参数修复了问题,虽然现在我认为只保留http并从标头的cookie中读取更安全。
搜索Cookie,点击CookieJar,制作方法
Cookie::make("XSRF-TOKEN", Session::token(), 0, null, null, null, false))
这会发送一个非HTTP HTTP ONLY Cookie,您可以从angularJS
中读取