16

次のエラーが表示されます: jquery ajax readystate 0 responsetext status 0 statustext errorwhen given it: url(http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm)、ただしurl(localhost:""/embparse_page)、ローカルホストで与えると正常に動作します。

Google 検索で見つけたヘッダーを使用してみましたが、これも使用しましたbeforeSend:""が、まだ機能していません。

主な問題は次のとおりXMLHttpRequest cannot load http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm. Origin "local server" is not allowed by Access-Control-Allow-Origin.だと思いますが、理解できません。

私はこれにかなり慣れていないので、誰でも私に問題を説明してもらえますか。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:ng="http://angularjs.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta Access-Control-Allow-Origin="*" />
    <title>Page Parsing</title>
    <script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script>
    <script>
    getit=function(){
        jQuery.support.cors = true;
        $.ajax({
            type:"GET",
            url:"http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm",
            dataType:"html",
            crossDomain:true,
            beforeSend: function(xhr) {
                xhr.overrideMimeType('text/plain;charset=UTF-8');
            },
            success:function(XMLHttpRequest,jqXHR ,data) {
                //alert(data.title);
                var starttitl=data.lastIndexOf('<title>');
                var endtitl=data.lastIndexOf('</title>');
                var title1=data.substring(starttitl+7,endtitl);
                alert(title1);
            },
            error:function(errorStatus,xhr) {
                alert("Error"+JSON.stringify(errorStatus));
            }
        });
    }   
    </script>
</head>
<body>
    <div id="siteloader">
        <input type="button" onclick="getit()" />
    </div>
</body>
</html>
4

5 に答える 5

0

同一オリジンポリシー。あなたがオンになっているとき、ブラウザは許可しません

http://site1.com

接続先:

site2.com
sub.site1.com
site1:99.com
https://site1.com (not sure about this one)

これは、site1 が site2 からコンテンツを盗んで、site1 のコンテンツであると偽ることができないようにするためです。これを回避する方法はJSONP(Googleマップが使用していると思います)で、site2corsヘッダーを提供していますが、IEには実装の問題があるため、corsはjQuery 1.*ではサポートされていません(おそらく2.*でもサポートされていません)。どちらの場合でも、サイトがそのコンテンツを表示できるように、site2 がサイトと連携する必要があります。

これを自分でのみ使用する場合は、Firefox を使用して forcecors プラグインをインストールできます。アクティブにするには、ビュー => ツールバー => バーに追加を選択し、画面の右下にあるテキスト「cors」をクリックします。

于 2013-10-16T05:42:08.453 に答える
-3

txt/XMLデータ用のファイルの読み取りをテストjson/xmlしていて、エラーが発生しました...値が読み取られました:Status[0] & readyState[0]これStatusText[error];は Internet Explorer では正常に機能しましたが、ドメインが同じである必要があるため、Chrome では機能しませんでした

これはそれを修正したものです

C:\WINDOWS\system32\drivers\etc\hosts に移動します。

localhost アプリに名前を付けます。

127.0.0.1   SampleSiteName.com

クロムでコードを開きますhttp://SampleSiteName.com/YourAjaxFileName.htm(開いた場合は、ホスト名を正しく入力したことを意味します)HTMLファイルに移動し、読み取ろうとしているファイルの相対アドレスを指定します(FileToBeRead.txtと同じフォルダーにある場合YourAjaxFileName.htm、 URL を入力してください: " /FileToBeRead.txt")

これで、コードは Chrome でも動作します。

于 2016-10-21T04:47:19.950 に答える