2011-07-12 5 views
4

mydomain.comからロードされたスクリプトファイルがあり、そのドメインにajaxリクエストを送信しています。スクリプトは、他のドメインにロードされて初期化され、要求をいつ行うかを指示します。私は問題に直面していますが、ブラウザはそれがクロスドメイン要求だと思っているからです。私は、スクリプトファイルがロードされたどのドメインであれ、その起点に要求を戻すことができたと思ったのですか?クロスドメインリクエスト

ページsomeotherdomain.comで:ここでは例として、いくつかのコードです

<html> 
    <head> 
     <script type="text/javascript" src="http://mydomain.com/test.js"></script> 
     <title>Cross-Domain Ajax Test</title> 
    </head> 
    <body> 
     <h1>Test</h1> 
     <p id="ajax-response"></p> 
     <script type="text/javascript"> 
      Test.testAjax(); 
     </script> 
    </body> 
</html> 

スクリプトは、私が間違っているのは何mydomain.com

Test = { 
    testAjax: function() { 
     //make ajax request to http://mydomain.com/myendpoint 
    } 
} 

からロードされましたか?適切なアプローチは何ですか?

答えて

0

JavaScriptをロードすると、コードがsomeotherdomain.comのようになり、そのドメインからクロスドメインの問題がmydomain.comになります。

2

私は、スクリプトファイルがロードされたどのドメインからでもその起点にリクエストを戻すことができたと思いましたか?

起源は常にページないスクリプトですいいえ。

+1

をので、どのようにGoogle Analyticsのか、他のJavaScript APIライブラリのようなものが自分の呼び出しを行うのですか? – Micah

+2

どちらか彼らが作ります書き込み専用リクエスト、またはJSONPを使用します。 – Quentin

1

スクリプトの起点は常にmydomain.comです! Ajaxプロキシをバックエンド経由で使用するか、最終的にはJSONPのいずれかの方法を使用することができます。

2

私は間違っていますか?

あなたのスクリプトは、1つのドメインから配信されていて別のドメインのスクリプトを要求することによってドメイン間の制限に違反しています。

正しいアプローチは何ですか?

2 possibilitesあります

  1. 置き、実行中のスクリプトと同じドメインの下と呼ばれるスクリプトの両方が。

  2. 制限をバイパスするためにdataType = "jsonp"を使用してください。 jQueryのは、いくつかの魔法(この作業を行うために<script src="mydomain.com/endpoint" />の形式で、インラインスクリプト参照してコールを交換を行います。

関連する問題