認証用の Passport モジュールを備えた nodejs 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);
});
ご協力ありがとうございました