Angularjs $ http在响应中似乎不了解“ Set-Cookie”

我有一个带有Passport模块的Node.js Express REST

API,用于身份验证。登录方法(GET)在标题中返回cookie。当我从Chrome调用它时,它工作正常,我的Cookie已在浏览器中设置。

但是,如果我通过Angularjs中的$ http调用它,则不会设置cookie。

Set-Cookie:connect.sid=s%3Ad7cZf3DSnz-IbLA_eNjQr-YR.R%2FytSJyd9cEhX%2BTBkmAQ6WFcEHAuPJjdXk3oq3YyFfI; Path=/; HttpOnly

如您在上面所看到的,Set-Cookie位于http服务响应的标题中。

也许HttpOnly可能是此问题的根源?如果是,我该如何更改?这是我的明确配置:

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.org/zh-

CN/docs/HTTP/Access_control_CORS

XMLHttpRequest和访问控制公开的最有趣的功能是能够识别HTTP

Cookie和HTTP身份验证信息的“凭证”请求。默认情况下,在跨站点XMLHttpRequest调用中,浏览器将不发送凭据。调用XMLHttpRequest对象时,必须设置一个特定的标志。

您可以使用options对象设置凭据的使用,请参阅

http://docs.angularjs.org/api/ng.$http

例:

$http({withCredentials: true, ...}).get(...)

以上是 Angularjs $ http在响应中似乎不了解“ Set-Cookie” 的全部内容, 来源链接: utcz.com/qa/397438.html

回到顶部