さまざまなマシンで実行されているブラウザーのグループにジョブを分散するシステムがあります。各ブラウザは、ジョブが来るのを待っているページをリロードします。
各ジョブが行うことの 1 つは、システムから情報を取得するために、ローカル マシンで実行されているローカル サーバーに対してクロスドメイン JSONP 要求を行うことです。これは、Opera を除く、私が試したすべてのブラウザーで機能します。
リクエストを行うために使用しているjQueryコードは次のとおりです。
$.ajax({
url: "http://10.20.30.40:8000/...",
dataType: "jsonp",
data: someData
success: function(data) { ... }
});
ホストは10.20.30.40
ローカル IP アドレスであり、ブラウザを使用してマシン上で実行されているローカル サーバーを識別します。このリクエストを行っているページはblah.internal.example.com
、ネットワーク内のすべてのマシンに表示されるようなドメイン名からロードされます。
Opera(私は12.02を使用しています)から行われた最初のそのようなリクエストは成功します。ただし、同じ方法で作成された後続の要求が実際に作成されることはありません。インスペクターのネットワークタブには表示されません。コンソールに、というメッセージが表示されますLinked script not loaded
。
このメッセージ (およびリクエストの欠如) は、このブログ投稿で説明されている Opera のクロスネットワーク セキュリティによって引き起こされていると思います。Stackexchange では、この回答は回避策を示唆していますが、ユーザーの操作が必要です。私の使用例では、ブラウザーはスクリプトによって開始、停止、および実行されるため、ユーザーの操作はオプションではありません。
Opera でこのネットワーク間セキュリティを完全に無効にする方法、または特定の「信頼できる」ホストからロードされたページに対して無効にする方法はありますか? 設定で行うことができる変更、またはopera:config
セッション間で固定される変更が必要です。(これらのコンピューターはすべて、内部で制御されたページ上の内部ネットワークで実行されているため、クロスネットワーク攻撃については心配していません。)