1

私たちはアプリケーションに Ajax 呼び出しを使用しており、サーバー ドメイン内の URL に対してはうまく機能しています。しかし、Web で URL の ajax 呼び出しを使用すると、適切なエラー メッセージが表示されずに失敗することがわかりました。指定された詳細を使用して Web を検索しましたが、この問題の合理的な原因や解決策は見つかりませんでした。

私のコードは、以下のような単純な ajax 呼び出しです。

var url = "http://www.google.com";
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    alert('done');
    }
  };
xmlhttp.open("GET",url,true);
xmlhttp.send();

URL がサーバー ドメインからのものである場合、これは問題なく機能しますが、これが Google のようなオープンなインターネット URL である場合、異なるブラウザーでは異なる動作で失敗します。

IE9 では、xmlhttp.open("GET",url,true) で「Javascript エラー: アクセスが拒否されました」が表示され、xmlhttp.status が「エラー c00c023f により操作を完了できませんでした」となる

Chrome と FF では、ログにエラーは表示されませんが、xmlhttp.status は 0 になります。

いずれの場合も、ajax 呼び出しは成功しません。

そのような問題の原因は何ですか?ブラウザで直接試してみるとGoogleのURLにアクセスできるので、これはネットワークの問題ではないと思います。では、ブラウザからの ajax 呼び出しの試行をブロックするものは何でしょうか?

よろしく Vijay.K

4

1 に答える 1

1

クロス ドメイン クエリは、IE 9、Chrome、Firefox では機能しません。これはセキュリティの問題です。しかし、なぜまだ XHR を使用しているのですか? jQueryの素晴らしい$.ajax権利を使用できますか?これには、次のように簡単に使用できます。

$(document).ready(function(){
    $.ajax({
        url: "http://www.google.com/",
        success: function(){
           alert("Done!");
        }
    });
});

ここでの問題は、クロスドメインにアクセスしようとしていることです。これはセキュリティ違反であり、0何をしても状態が常に返されます。フィドルを確認してください。

フィドル: http://jsfiddle.net/uazqY/

于 2012-09-11T06:57:20.877 に答える