ローカル開発時のクロスドメイン制約の回避方法




フロントエンドはAngularやReactなどのWebで、バックエンドはWebAPIをVisual Studioで作成する場合、クロスドメイン制約でエラーではまってしまった。

なので回避方法をまとめておきます。

ローカル開発時はhttp://localhost~でデバッグしますが、ポート番号が異なるとクロスドメイン制約でエラーとなります。

フロントエンドとバックエンドを異なるアプリケーションでデバッグする場合、同一のポート番号は使用できないため、異なるoriginと認識され、エラーとなるわけです。

どうせ開発時しか使わないlocalhostくらい見逃してくれてもいいのに、やれやれです。

どうやって回避するかというと、同一のポート番号でデバッグできるようにするか、異なるポート番号でクロスドメイン通信を許可するかの2通りのやり方があります。

1.フロントエンドとバックエンドのプロジェクトをVisual Studioで一つのソリューションにして、デバッグする。

2.バックエンドのWebAPIを「ローカルIIS」でデバッグする。その際、IISでクロスドメイン通信を許可するように設定する。

1の方法だと同一のポート番号を使用するのでクロスドメイン制約を回避できます

問題は、フロントエンドのWebの環境を、WebAPIのプロジェクトと同居させてVisual Studioで動かすようにする設定が色々面倒ということです。(フロントエンドの開発環境はコロコロ変わるので、その度にはまりたくない!)

というわけで、個人的にですが2の方法を選択することにしました。

・まず、Visual Studioを管理者権限で開きます。

・WebAPIのプロジェクトのプロパティで、Webを選択し、サーバーのところで「ローカルIIS」を選択します。

・「仮想ディレクトリの作成」をクリックして、仮想ディレクトリを作成します。

・インターネット インフォメーション サービス (IIS) マネージャー を開きます。

・作成した仮想ディレクトリの「HTTP 応答ヘッダー」を開きます。

・操作パネルの追加から、名前に「Access-Control-Allow-Origin」、値に「*」を指定してHTTP応答ヘッダーを追加します。

あとは、バックエンドのWebAPIをデバッグ実行状態にして、フロントエンド側では「http://localhost~」とフルパスでWebAPIのパスを指定すればクロスドメイン制約を回避できます。




シェアする

  • このエントリーをはてなブックマークに追加

フォローする