2

私は次のコードを持っています:

var params = {
            cache:false, 
            dataType:"json", 
            type:"GET",
            url: "/order.php",
            error: function(data){
                dump(data);
            },
            success: function (data){
              alert('ok');
            },
            data:{
                js:1
            }
        };

$.ajax(params);

したがって、example.comを実行すると、完璧に機能します。しかし、www.example.comを実行すると、関数dump()を介してエラーが発生します。Googleコンソールにエラーが表示されます:

XMLHttpRequestはロードできません=1345470451769">http://example.com/order.php?js=1&tariff=247&=1345470451769。Originhttp://www.example.com はAccess-Control-Allow-Originで許可されていませ

どういう意味ですか?

したがって、www.domain.comからdomain.comへの永続的なリダイレクトは必要ありません。

助けてくれてありがとう。

アップデート1: 機能を追加しました:

function getBaseUrl()
{
   var baseUrl = '';
   baseUrl += location.protocol + '//';
   baseUrl += location.hostname;

   return baseUrl;
}

URL:getBaseUrl()+ "/order.php"のURL:"/order.php"を変更します

同じエラーが発生しました。私はここで何か間違ったことをしていますか?

更新2: これをhtaccessファイルに追加しました:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin http://sample.com http://www.sample.com
</IfModule>

wwwでエラーが発生するため、ホスティングでサポートされていないようです。

4

2 に答える 2

4

XMLHttpRequestそこにあるエラーは、ターゲットドメインが応答ヘッダーでこれを許可されていることを指定しない限り、あるドメインから別のドメインにを作成できないことを意味します。これは、ブラウザによって実施されるセキュリティ対策です。

ドメイン全体が一致する必要があるため、example.comはXMLHttpRequestwww.example.comにリクエストを送信できません。その逆も同様です。

javascriptを使用して、現在のドキュメントの場所に基づいてURLを取得するか、代わりに相対パスを使用することができます。

また、ウェブサーバーが1つのドメインから別のドメインへのサイレントリダイレクトを行っていないことを確認してください。これにより、権限の問題が発生する可能性もあります。

Webサーバーにアクセスできる場合の代替手段は、適切なクロスドメインヘッダーを応答に追加することです-http ://www.w3.org/TR/cors/

例: Access-Control-Allow-Origin: http://www.example.com http://example.com

編集:上記のリストのドメインは、コンマではなくスペースで区切る必要があります。

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://sample.com http://www.sample.com"
</IfModule>
于 2012-08-20T13:53:49.743 に答える
2

サブドメインは、同一生成元ポリシーを持つ別のドメインと見なされます。wwwの有無にかかわらずサイト機能を行う場合は、相対パスを使用してください。

サーバーがリダイレクトする場合、現在のページがwwwにないのはなぜですか?

SEOの観点からは、サーバーがURLのいずれかのバージョンにリダイレクトするようにする必要があります。

于 2012-08-20T13:55:33.043 に答える