私はEclipseを使用して、Angular 2フロントエンドとJava RESTバックエンドで構成されるアプリケーションを開発しています。同じサーバー上の2つのサイト間でWebセキュリティの制限を回避する
フロントエンドでは、CLIにng serve
コマンドを発行してアプリを起動するAngular CLIプラグインを使用しています。このコマンドは、バックエンドのためにポート4200
上のhttpサーバをセットアップし、私は、これらのポートの両方が設定されているとき、ポート8088
にEclipse内突堤で起動し、社内フレームワークを使用しています使用されているフレームワークとプラグインの性質上、それらは常に区別されます。
認証は、フレームワークの一部としてポート8088にもデプロイされるOAuth2サービスを介して機能します。このサービスは、ブラウザセッションが認証済みであることを証明するクッキーを設定します。私は、このサービスがREST APIのSwaggerインスタンス(同じフレームワークの一部として8088でも実行されています)に対してテストすることで、このサービスが正しく動作することを確認しました。
問題は、ブラウザーが4200のAngular 2アプリを対象としているとき、内部REST API要求に:8088が認証Cookieを保持していないことです。おそらく、これはサイト間の保護のためです。
これらの2つの「サイト」が実際に同じシステムの一部であることをブラウザに伝える方法はありますか?
また、デベロッパーブラウザ(Chrome)を動作させるように設定する必要がある場合は、私もそれを使用することができます。しかし、私は--disable-web-security --user-data-dir
の推薦を試みましたが、依然としてリクエストにクッキーが表示されません。
最後に、私はApacheを開発マシンにインストールしています。私が適切な仮想ホストを設定してそれをプロキシとして使用して、ブラウザがすべて同じであると考えるようにすれば、それはおそらくはうまくいくでしょう。 /swagger
と/api
の要求をすべて傍受して8088に送信し、他のすべての要求を4200に転送するだけです。しかし、私はmod_rewriteとmod_proxyに対して頭を悩ませてきており、何かを考え出すことができませんでした。
です。バックエンドフレームワークに 'Access Control-Allow-Origin'ヘッダー' * 'が付いていることが分かります。しかし、 '--disable-web-security-user-data-dir'は動作しています。だから、問題は解決しました。今のところ... –
AFAIR with 'withCredentials'' ''は 'Access-Control-Allow-Origin'では動作しません。通常は 'access-Control-Allow-Origin'の値として' request.headers ['origin'] 'を使用して行います –
ブラウザがセキュリティを無効にしている限り、これは動作します... –