この設定で Web アプリケーションを開発しています。
Production:
frontend.myapp.com
appserver.myapp.com
auth.myapp.com
Development:
localhost:8080 (frontend)
localhost.com:3010 (appserver)
localhost.com:3011 (auth)
フロントエンドは、nginx で提供される angularjs SPA です。Appserver は、API (ユーザー、アイテム、注文など) を公開する Rails アプリです。Auth は、omniauth で認証を処理する別の Rails アプリです。
本番環境では、さまざまなサブドメインを仮想ホストとして使用しています。開発では、さまざまなポートを使用します (vagrant での構成が簡単なため)。
1 つのことを除いて、すべて正常に動作します。Angular アプリ (フロントエンド) は、認証サーバーに ajax 要求を行う必要がある場合があります。これは、フロントエンド ポートが 8080 で認証ポートが 3011 であるため、クロス ドメイン攻撃と見なされます。サブドメインを使用しているため、本番環境では問題はありません。
クロス ドメイン エラーを防ぐにはどうすればよいですか?
解決策の 1 つは、開発でもサブドメインを使用することです。(たとえば、私のホストファイルでは:
10.2.0.15 frontend-local.myapp.com
10.2.0.15 appserver-local.myapp.com
10.2.0.15 auth-local.myapp.com
(10.2.0.15 は私の vagrant マシンの IP です)
私のローカル セットアップは、プロダクション セットアップに似ているため (ポートの代わりにサブドメインを使用)、この修正が気に入っています。
しかし、vagrant のリロード後、ゲスト (lucid32) マシンの IP が変更され、ホストファイルを再度編集する必要があります...
そして、vagrantに静的IPを割り当てるように指示する方法が見つかりませんでした...
助言がありますか?