3

さまざまなマシンで実行されているブラウザーのグループにジョブを分散するシステムがあります。各ブラウザは、ジョブが来るのを待っているページをリロードします。

各ジョブが行うことの 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セッション間で固定される変更が必要です。(これらのコンピューターはすべて、内部で制御されたページ上の内部ネットワークで実行されているため、クロスネットワーク攻撃については心配していません。)

4

2 に答える 2

2

Opera 12+ (およびその他のすべてのブラウザー、さらには IE8) で CORS を使用できるのに、JSONP を気にする必要はありません。それは魅力のように機能します。

Access-Control-Allow-*必要なヘッダーをローカル サーバーに追加することを忘れないでください。

Opera dev ネットワークの詳細: http://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/

于 2012-09-19T06:15:11.687 に答える
0

opera:config#Cross%20Networkでセキュリティ機能を完全に無効にしてみてください(SOではリンクできません。)

当然、セキュリティ機能を無効にしている場合は、その後は慎重にサーフィンする必要があります。.;-)

于 2012-09-20T07:37:31.283 に答える