ブラウザーでホストされている JS アプリが、最初に JS アプリを提供しているマシンとは異なるポート、場合によっては別のマシンで実行されているサーバーにリクエストを送信できるようにする方法を探しています。
Mac OS X Apache Web サーバーから単純な JavaScript (HTML5) アプリを提供しています。Windows、Android、OS X のできるだけ多くのブラウザーでこのアプリを実行できるようにしたいと考えています。
私の JavaScript アプリは、XMLHttpRequest を使用して、JSON を返す最小限のカスタム サーバーの要求を作成します。
たとえば、私の JS アプリは次の場所でアクセスできます。http://10.0.1.3/poc/dashboard.html
私のカスタム サーバーは同じマシンで実行され、ポート 49379 でリッスンしています ... このようなリクエストはhttp://10.0.1.3:49379/find?name=Fred
、'name' が 'Fred' に等しい一連のタプルを返します。
このリクエストをナビゲーション ツールバーに直接入力すると、目的の結果が得られます。
JS 内で同じリクエストを行うと、いくつかのエラーが発生します。
var theXHR = new XMLHttpRequest();
theXHR.onreadystatechange = onReadyStateHandler;
theXHR.open("GET", "http://" + ipAddress + ":49379/find?name=Fred", true);
theXHR.setRequestHeader("User-Agent", "XMLHTTP/1.0");
theXHR.send(null);
次の 2 つのエラーが表示されます。
安全でないヘッダー「User-Agent」の設定を拒否しました
XMLHttpRequest を読み込めません
http://10.0.1.3:49379/find?name=Fred
。http://10.0.1.3
Access-Control-Allow-Origin でオリジンが許可されていません。
Apache サーバー、JavaScript、およびカスタム サーバーを制御できます。これは、分離されたネットワークでデモを行う概念実証にすぎません。したがって、セキュリティの問題については心配していません。
また、Chrome、Firefox、Safari で実行しています。これらはすべて XMLHttpRequest2 オブジェクトを使用しているようです。