最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Angularjs $ HTTP似乎并不明白在响应“设置Cookie”

IT培训 admin 10浏览 0评论

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(...)
发布评论

评论列表 (0)

  1. 暂无评论