/ /フロントエンドからバックエンドへのHTTP要求のCookieを、Angular - angularjs、angular-http、angular-cookiesで送信する

フロントエンドからバックエンドへのHTTP要求のCookieを、Angular - angularjs、angular-http、angular-cookiesで送信する

私はAngularJSを使ってWebアプリケーションを開発しています。

このアプリケーションは次のように実現されています。

  • フロントエンド、ロジックを持たないコンポーネント、バックエンドを何度も照会するだけで、必要なデータをすべて受け取ることができます。
  • 多くのRESTfulサービスを含むバックエンドであり、それぞれがフロントエンドにデータを返します(フロントエンドが呼び出した場合)。

私のフロントエンドでは、メインコントローラで、次のように$ cookieStoreを使用してクッキーを作成します。

// Setting sessionID in the cookie
$cookieStore.put("sessionID", $scope.contextData.sessionId);

今、私はこのクッキーの情報を、私が呼ぶ一般的なバックエンドサービスに送りたいと思っています。たとえば、私の呼び出しの1つはこの形式です:

$http({
method: "GET",
url: urlBase + "/context/person"
}).success(function(result, status, headers, config) {
$scope.currentPerson = result;
});

どのようにしてクッキーを送信できますか? 前もって感謝します。

回答:

回答№1は2

引数を設定する必要があります withCredentials 見る ドキュメント

デフォルトでは、クッキー。これは単純なGETリクエストであるため、事前に照合されませんが、ブラウザはAccess-Control-Allow-Credentials:trueヘッダーを持たないレスポンスを拒否し、呼び出し元のWebコンテンツでレスポンスを利用できないようにします。

私はあなたがサーバーの同じドメインでスクリプトを実行していると仮定します。

あなたのドメインで動作するJavaScriptのみCookieを読み取ることができるため、サーバーはXHRがドメイン上で実行されているJavaScriptから来ていることを保証することができます。クロスドメインリクエストに対してヘッダーは設定されません。


回答№2の場合は0
$http({
method: "POST",
url: urlBase + "/context/person"
}).success(function(result, status, headers, config) {
$scope.currentPerson = result;
});

または、角度のショートカットポスト方法を使用することができます:

$http.post("/someUrl", data, config).then(successCallback, errorCallback);

POST メソッドは、バックエンドにクッキーを送信します。バックエンドでは、 JSON.parse(req.cookies) あなたのクッキーを入手する。