AngularJS $ cookies,未定义

时间:2014-04-13 21:57:02

标签: angularjs cookies csrf

我尝试使用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);
            }
        }

    }]);

1 个答案:

答案 0 :(得分:1)

我通过查看Laravel API文档找到了解决方案,默认情况下Cooke :: make()发送一个HttpOnly cookie,这就是为什么我无法从Angular中读取它,为httpOnly添加false参数修复了问题,虽然现在我认为只保留http并从标头的cookie中读取更安全。

http://laravel.com/api/4.1/

搜索Cookie,点击CookieJar,制作方法

Cookie::make("XSRF-TOKEN", Session::token(), 0, null, null, null, false))

这会发送一个非HTTP HTTP ONLY Cookie,您可以从angularJS

中读取