与饼干混淆

时间:2014-05-05 18:15:13

标签: javascript angularjs session cookies http-headers

我正在尝试使用AngularJS建立会话,如下所示:

var login = function (email, pw) {
        $http.post('http://some_api/api/v1/users/sign_in', {'email': email, 'password': pw}
            ).
            success(function (data, status, headers, config) {
                    alert('success');
                    console.log(status, headers());
                    SessionService.isLogged = true,
                    SessionService.name = data.name,
                    SessionService.id = data.id,
                    SessionService.email = email,
                    SessionService.password = pw,
                    SessionService.coverUrl = data.coverUrl,
                    SessionService.imageUrl = data.imageUrl;
                    // TODO Also store venue id associated to user if applicable
                    SessionService.venueId;
                    //TODO route to whatever page we came from in the case that user is being asked to re-authenticate
                    $location.url('/summary');
                }
            ).
            error(function(data, status, headers, config){
                SessionService.destroy();
                alert('login failure');
                }
            );

但是,当请求响应从API返回时,我只使用$ cookies服务获得以下标头:

cache-control: "max-age=0, private, must-revalidate"
content-type: "application/json; charset=utf-8"

但是,我知道Cookie是从服务器发回的,因为Chrome会将其作为填充的Set-Cookie标头在Developer Tools中发回。我在另一个问题中读到AngularJS无法访问Set-Cookie标头因为$ http服务,因为它调用的Javascript函数的固有规范会返回除Set-Cookie标头之外的所有标头。因此,我的问题是:

  1. 为什么开发人员提供的API会发回cookie 工具但实际上并没有存储在浏览器中? (我查了一下 带有扩展名的浏览器cookie,但没有任何礼物)。 不是API发送回浏览器的任何cookie 被拦截并存储在浏览器的cookie存储中? (我也 想知道这是否与角度的运行循环有关...因为我的 页面永远不会重新加载 - 它们使用ngRoute路由,没有额外的 页面加载)

  2. 如果以上结果证明浏览器不会存储     从javascript / angular请求收到的cookie,我怎么样     存储饼干?我见过使用$cookies.mySession = "cookieContentHere";,但如果我不能,我该如何使用它     访问Set-Cookie标题?

  3. 提前感谢所有答案!

0 个答案:

没有答案