2

この設定で 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を割り当てるように指示する方法が見つかりませんでした...

助言がありますか?

4

2 に答える 2

4

別のポートにアクセスするとSame Origin Policyに違反するため、機能していません。JSONp リクエストを使用できますが、本番環境では必要ありません。ローカル マシン上のすべてのドメインを許可するようにAccess-Control-Allow-Originを設定するとどうなりますか? その後、少なくとも最新のブラウザーで動作するはずです。

于 2013-11-05T16:32:22.070 に答える
0

hosts ファイルの設定は正しい方向に進んでいます。

Vagrant にマシンに静的 IP を割り当てるのは非常に簡単です。これを試してください。

config.vm.network :private_network, ip: "10.2.0.15"
于 2013-11-05T22:49:06.533 に答える