【问题标题】:AngularJS $cookies, getting undefinedAngularJS $cookies,变得未定义
【发布时间】:2014-05-27 18:05:15
【问题描述】:

我正在尝试使用 ngCookies 提供的 $cookies 服务来检索 Cookie,但我不断收到“未定义”,我真的不知道它出了什么问题...... 我可以清楚地看到 Chrome 的开发控制台中显示的 cookie。 而且我还设置了一个 XSRF-TOKEN cookie,而 Angular 的 $http 没有将其作为标题 (X-XSRF-TOKEN) 包括在内,我认为这是同样的问题。

Laravel 默认加密 Cookie 并且非常长,是这样吗?

如果我使用 $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);
            }
        }

    }]);

【问题讨论】:

    标签: angularjs cookies csrf


    【解决方案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 ONLY Cookie,您可以从 angularJS 读取它

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2015-07-06
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多