Angular のローカル開発 (ng serve
) は、デフォルトで http://localhost:4200 で起動します。
一方、バックエンド(Java/Spring Boot など)は http://localhost:8080 など別ポートで動作していることが多いです。
このとき、フロントから直接 http://localhost:8080/api/...
にアクセスすると CORS (Cross-Origin Resource Sharing) の制約でエラーになります。
そこで proxy.conf.json
を使い、Angular 開発サーバー(:4200)が あたかも同じオリジンで通信しているように バックエンドにリクエストを転送してくれます。
proxy.conf.jsonの設定
各プロパティの意味
基本的な設定は最初の2つ、パスとtarget。その他は必要に応じて設定する。
“/api”
Angular 側でアクセスするパスのプレフィックス。
つまり、この設定は、以下のURLでアクセスされることを想定している。
http://localhost:4200/api/...
“target”: “http://localhost:8080”
実際にリクエストを転送する先(Java サーバー)のエンドポイント。
“secure”: false
HTTPS の証明書を無視するかどうか。ローカル開発では false にすることが多い。
“changeOrigin”: true
HTTPリクエストヘッダーにはHostというパラメータがあるが、これを書き換えるかどうか。
この設定をしないと、Javaにリクエストが送られる際、リクエストヘッダーに、書き換えられる前のURLである以下のパラメータが残る。
Host: localhost:4200
“logLevel”: “debug”
転送時のログレベル。デバッグ用。
proxy.conf.jsonを読み込む
angular.jsonのprojects.app-name.architect.serve.optionsに、先ほど作成したproxy.conf.jsonを読み込む設定を追加する。
"proxyConfig": "src/proxy.conf.json"
rootの設定にもよるかと思いますが、src/は不要になるかもしれません。
まとめ
proxy.conf.json
は、Angular 開発環境で CORS を回避しつつ Java サーバーへ通信を中継するための設定ファイルです。
本番環境では不要ですが、ローカル開発を快適にするためにほぼ必須の設定です。
コメント