私は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)
あなたのクッキーを入手する。