1

ajax スクリプトを含むグローバル js ファイルがあります。各ページのヘッダーに含まれています。

<script src="http://www.mydomain.com/js/global.js" type="text/javascript"></script>

次に、global.js では、ajax スクリプトは次のようになります。

$('#send_ajax').click(function(){
   $.ajax({
      type: 'post',
      url: 'http://www.mydomain.com/ajax-process',
      data: data + '=' + encodeURI(data),
      success: function(data){
          $('#result').html();
      }
   });
});

しかし今、私はいくつかの奇妙な問題を抱えています。誰かが次のように私のページを開いた場合http://www.mydomain.com/somepage、スクリプトは正常に実行されますが、誰かが私のページを開いhttp://mydomain.comた 場合http://www.mydomain.com/ajax-process. Origin http://mydomain.com is not allowed by Access-Control-Allow-Origin.

なぜこれらはすべて私のサイトであり、wwwこのwww問題を解決できるのですか? それを解決する方法は?

4

2 に答える 2

0

単一生成元ポリシーでは、ページの元のサーバーに対してのみAjax呼び出しを行うことができるとされています(スクリプトのロード元は実際には重要ではありません)。

リクエストを許可するには、すべてのプロトコル(httpまたはhttps)、ドメイン名、およびポートが完全に一致している必要があります。www.example.comはexample.comと同じですが、例外はありません。

あなたの場合、適切な大まかな順序で、あなたができることが3つあります。

  • 絶対URLを使用しないでください-Ajaxリクエストを「/ajax-process」だけに行う場合。これにより、ページの送信元のサーバーにリクエストが送信されます
  • リダイレクトを使用して、人々がwww.example.comにのみアクセスできるようにします
  • クロスドメインアクセス制御を実装します。これには、アプリへのhttpリクエストの実行を許可されているドメインを説明するhttpヘッダーの送信が含まれます。これはほぼ間違いなくあなたにとってやり過ぎです。
于 2012-06-17T09:17:40.523 に答える
0

これはどう:

var url = location.protocol + '://' + location.host + '/ajax-process'
于 2012-06-17T09:27:58.323 に答える