Angularjs $ HTTP似乎并不明白在响应“设置Cookie”
我有认证护照模块明确的NodeJS REST API。一个登录方法(GET)返回在标头中的cookie。当我把它从Chrome中正常工作,我的饼干在我的浏览器设置。
但是,如果我从Angularjs调用它通过HTTP $,cookie不会设置。
Set-Cookie:connect.sid=s%3Ad7cZf3DSnz-IbLA_eNjQr-YR.R%2FytSJyd9cEhX%2BTBkmAQ6WFcEHAuPJjdXk3oq3YyFfI; Path=/; HttpOnly
正如可以看到的上方,所述的Set-Cookie存在于HTTP服务响应的报头中。
也许仅Http可能是这个问题的根源?如果是的话,我该如何改变呢?这里是我的快速配置:
app.configure(function () {
app.use(allowCrossDomain);
app.use(express.bodyParser());
app.use(express.cookieParser())
app.use(express.session({ secret: 'this is a secret' }));
app.use(flash());
//passport init
app.use(passport.initialize());
app.use(passport.session());
app.set('port', process.env.PORT || 8080);
});
谢谢您的帮助
回答如下:确保配置为使用凭据您的$ HTTP请求。从XHR文档:
https://developer.mozilla/en-US/docs/HTTP/Access_control_CORS
最有趣的功能都通过XMLHttpRequest的暴露和访问控制是让那些认识HTTP Cookie和HTTP认证信息的“持证”请求的能力。默认情况下,跨站点XMLHttpRequest的调用,浏览器不会发送凭据。具体标志具有被调用时XMLHttpRequest对象上进行设置。
您可以使用选项对象,设置使用的凭据,请参阅
http://docs.angularjs/api/ng.$http
例:
$http({withCredentials: true, ...}).get(...)
Angularjs $ HTTP似乎并不明白在响应“设置Cookie”
我有认证护照模块明确的NodeJS REST API。一个登录方法(GET)返回在标头中的cookie。当我把它从Chrome中正常工作,我的饼干在我的浏览器设置。
但是,如果我从Angularjs调用它通过HTTP $,cookie不会设置。
Set-Cookie:connect.sid=s%3Ad7cZf3DSnz-IbLA_eNjQr-YR.R%2FytSJyd9cEhX%2BTBkmAQ6WFcEHAuPJjdXk3oq3YyFfI; Path=/; HttpOnly
正如可以看到的上方,所述的Set-Cookie存在于HTTP服务响应的报头中。
也许仅Http可能是这个问题的根源?如果是的话,我该如何改变呢?这里是我的快速配置:
app.configure(function () {
app.use(allowCrossDomain);
app.use(express.bodyParser());
app.use(express.cookieParser())
app.use(express.session({ secret: 'this is a secret' }));
app.use(flash());
//passport init
app.use(passport.initialize());
app.use(passport.session());
app.set('port', process.env.PORT || 8080);
});
谢谢您的帮助
回答如下:确保配置为使用凭据您的$ HTTP请求。从XHR文档:
https://developer.mozilla/en-US/docs/HTTP/Access_control_CORS
最有趣的功能都通过XMLHttpRequest的暴露和访问控制是让那些认识HTTP Cookie和HTTP认证信息的“持证”请求的能力。默认情况下,跨站点XMLHttpRequest的调用,浏览器不会发送凭据。具体标志具有被调用时XMLHttpRequest对象上进行设置。
您可以使用选项对象,设置使用的凭据,请参阅
http://docs.angularjs/api/ng.$http
例:
$http({withCredentials: true, ...}).get(...)