我正在尝试使用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标头之外的所有标头。因此,我的问题是:
为什么开发人员提供的API会发回cookie 工具但实际上并没有存储在浏览器中? (我查了一下 带有扩展名的浏览器cookie,但没有任何礼物)。 不是API发送回浏览器的任何cookie 被拦截并存储在浏览器的cookie存储中? (我也 想知道这是否与角度的运行循环有关...因为我的 页面永远不会重新加载 - 它们使用ngRoute路由,没有额外的 页面加载)
如果以上结果证明浏览器不会存储
从javascript / angular请求收到的cookie,我怎么样
存储饼干?我见过使用$cookies.mySession =
"cookieContentHere";
,但如果我不能,我该如何使用它
访问Set-Cookie标题?
提前感谢所有答案!