angularJS アプリで $resource を使用しています。Cookie は自動的に送信されますか? 同じドメインでリクエストを行っています。
3 に答える
すべての前提条件 (同じドメイン、一致するパス、一致するポート、同じプロトコル、有効期限が切れていないなど) が満たされている限り、ブラウザーは常に (XHR 要求であるかどうかに関係なく) 要求と共に Cookie を送信します。
$resource
サービスは単純な Ajax ラッパーであるため、Cookie が送信されます (すべてが整っている場合) 。
いいえ。ただし、Cookie を送信する場合は、$cookiesサービスを試して Cookie を取得し、API を使用してペイロードまたはヘッダーに含めて送信できます。
$cookies
また、すべての API 呼び出しで Cookie を指定する必要がないように、(サービスが挿入された) デフォルトのヘッダーに Cookie を設定することもできます。
var cookie = $cookies.myCookie; // suppose you already set $cookies.myCookie= 'xxx';
$http.defaults.headers.post.Cookies = cookie;
同じドメインで異なるポートを使用して異なるアプリケーションを実行している場合も、Cookie が送信されない理由になる可能性があることに注意してください。
Cookie は (SOP に関して) ポート固有であってはなりませんが、CORS は間違いなくそうです。HTTP Cookie はポート固有ですか?も参照してください。
私の経験では、現在のブラウザー (FF 47、Chrome 51、IE11) は、たとえば、XHR 要求で localhost:3000 から localhost:8080 に Cookie を送信しません。