3

jQueryを使用して外部JavaScriptファイルを表示しています。AJAXリクエストではないため、「同一オリジンポリシー」が破られていないのはなぜですか?

http://jsfiddle.net/m7q3H/52/

フィドルコード:

HTML

<body>
  <div id="toupdate">
     <script type="text/javascript" charset="utf-8" src="http://static.polldaddy.com/p/6343621.js"></script>
  </div>      
</body>​

jQuery

$(document).ready(function() {
   console.log('HTML is '+$('#toupdate').html());
});​
4

3 に答える 3

5

ああ、ここではまったく問題ありません。どこからでも JavaScript ファイルを参照できます。たとえば、Google CDN は、使用できる jQuery などの一般的な js ファイルを提供します。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

ちなみに、JSONPの jQuery の実装はまさにそのように機能します。<script>javascript を使用して、リモート サーバー側のスクリプトを指す DOM にタグを動的に挿入します。

<script src="//remotedomain.com/script?callback=abc"></script>

このリモート スクリプトは、Content-Type: 'application/x-javascript'応答ヘッダーと次の本文で応答します。

abc({"foo":"bar"})

abcドメインでは、関数を定義するだけです。

<script type="text/javascript">
    function abc(data) {
        alert(data.foo);
    }
</script>

クロスドメイン AJAX のシミュレーションです (ネイティブ XHR オブジェクトを使用していないため、シミュレーションと言いましたが、同じ効果が得られます)。

これで、jQuery の JSONP 実装が GET リクエストのみに制限されている理由が理解できます。これは、script タグを挿入すると、ブラウザーがそのsrc属性に GET リクエストのみを送信するためです。

于 2012-08-16T16:50:28.900 に答える
4

はい。scriptタグを使用して他のドメインからスクリプトを読み込むことはできますが、XmlHTTPRequestオブジェクト (AJAX リクエスト) を使用してクロスドメイン リクエストを作成することはできません。

于 2012-08-16T16:51:01.317 に答える
0

外部の.jsがロードされている限り

<script>

tag the same origin ポリシーは、信頼できる安全な js であると見なします。

于 2014-12-17T09:54:32.813 に答える