AngularJSとJavaサーブレットを使用したRESTful Webサービスに取り組んでいます。ユーザーがログインすると、バックエンドはフロントエンドに「Set-Cookie」ヘッダーを送信します。 Angularでは、$cookies
(ngCookie-モジュール)を介してヘッダーにアクセスし、設定します。
ユーザーはログインしたので、たとえばいくつかのものを削除できます。したがって、フロントエンドはGETリクエストをバックエンドに送信します。異なるドメインで作業するため、いくつかのCORSヘッダーを設定する必要があり、Angularは実際のGET要求の前にOPTIONS要求を実行します。
OPTIONSリクエスト:
GETリクエスト
これはAngularで$ httpモジュールを介して行いますが、JSESSIONID
を含むCookieを送信しません。
Angularを有効にしてCookieを送信するにはどうすればよいですか?
構成で、DI $httpProvider
を指定し、withCredentialsをtrueに設定します。
.config(function ($httpProvider) {
$httpProvider.defaults.withCredentials = true;
//rest of route code
})
資格情報付きのangularjsに関する情報: http://docs.angularjs.org/api/ng.$http
Mozillaの記事へのリンク: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5
$http.get("URL", { withCredentials: true })
.success(function(data, status, headers, config) {})
.error(function(data, status, headers, config) {});
留意すべきもう1つのこと:サードパーティのCookieを有効にするにする必要があります。 Chromeでグローバルに無効にしている場合は、ドメイン名の左側にある「i」記号をクリックしてからCookieをクリックし、ターゲットドメインを「ブロック」してブロックを解除します。