73

AngularJS と Java サーブレットを使用した RESTful Web サービスに取り組んでいます。ユーザーがログインすると、バックエンドは「Set-Cookie」ヘッダーをフロントエンドに送信します。$cookiesAngular では、 (ngCookie - モジュール) を 介してヘッダーにアクセスし、設定します。ここに画像の説明を入力

ユーザーがログインしたので、たとえば、いくつかのものを削除できます。したがって、フロントエンドは GET リクエストをバックエンドに送信します。私たちは異なるドメインで作業しているため、いくつかの CORS ヘッダーを設定する必要があり、Angular は実際の G​​ET リクエストの前に OPTIONS リクエストを実行します。

オプションリクエスト: OPTIONSリクエスト

GETリクエスト GETリクエスト

$http モジュールを介して Angular でこれを行いますが、JSESSIONID.

Angular が Cookie を送信できるようにするにはどうすればよいですか?

4

2 に答える 2

138

設定で DI$httpProviderを実行し、withCredentials を true に設定します。

.config(function ($httpProvider) {
    $httpProvider.defaults.withCredentials = true;
    //rest of route code
})

angularjs withCredentials に関する情報: 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

于 2013-06-12T12:30:25.330 に答える
11
$http.get("URL", { withCredentials: true })
  .success(function(data, status, headers, config) {})
  .error(function(data, status, headers, config) {});

留意すべきもう 1 つの点:サードパーティの Cookie を有効にする必要があります。Chrome でグローバルに無効にしている場合は、ドメイン名の左側にある「i」記号をクリックし、次に Cookie をクリックしてから、「ブロック」してターゲット ドメインのブロックを解除します。

于 2015-11-05T22:07:57.593 に答える