Cookie を使用してクロス オリジン リソース共有を行う際に問題が発生しています。これが私のセットアップです:
クライアント:
$.ajax({
type: 'POST',
url: '/processReq',
data: params,
xhrFields: {withCredentials:true},
crossDomain: true,
success: ...
});
ブラウザでクライアントをデバッグし、XMLHttpRequest.withCredentials が実際に true であることを確認しました。
サーバ:
次のヘッダーを設定しています。
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', '*');
私の問題は、セッション Cookie をブラウザーに保存して、その後の要求でサーバーに送信することができないことです。
ブラウザの応答ヘッダーは次のとおりです。
{
"server": "nginx/1.2.6",
"date": "Fri, 01 Feb 2013 23:46:07 GMT",
"content-type": "application/json; charset=utf-8",
"content-length": "306",
"connection": "keep-alive",
"x-powered-by": "Express",
"access-control-allow-credentials": "true",
"access-control-allow-origin": "*",
"set-cookie": [
"id=s%3Azm1m...NXe4Lkr9rLw; Domain=api.mydomain.io; Path=/; Expires=Sat, 01 Feb 2014 23:46:07 GMT; HttpOnly"
]
}
テストするたびに、サーバーに Cookie が送信されません。何か不足していますか?どんな助けでも大歓迎です。