23

Cloudflare のような CDN から JavaScript スクリプトを提供したいと考えています。

これで、スクリプトは ajax 経由でアプリ サーバーと通信します。これらのスクリプトを CDN からロードすると、同一オリジン ポリシーの制限が適用されませんか?

私のアプリがドメイン上にあるとしましょう:

http://app.com

そして、私は自分のスクリプトを

http://cdn.com/xyz/all.js

さて、私のスクリプトは私のアプリが実行されているドメインとは別のドメインから読み込まれるので、同じオリジン ポリシーが私のアプリとの ajax 通信を妨げていると思います。

私は何か間違っていますか?

4

1 に答える 1

23

いいえ、うまくいきます。これが、JSONP が機能する理由です。スクリプトの「起点」は、スクリプトがどこから来たかではなく、スクリプトが実行されたページです。

あなたがそれを求めたので、ここに参考文献があります(私はこれ以上のものを見つけることができませんでしたが、クロックフォードはよく知られています)

驚くべきことに、src 属性は、Same Origin Policy によって制約されません。これは、任意のサーバーに移動し、スクリプトを取得して実行できるスクリプト要素を作成できることを意味します。スクリプトによって JSON でエンコードされたデータが配信される場合、これは非常に便利です。残念ながら、スクリプトを制約したり、実行前に検査したりする方法はありません。ページからのスクリプトと同じ権限で実行されます。したがって、スクリプトはその Cookie にアクセスして使用できます。ユーザーの承認を使用して、元のサーバーにアクセスできます。DOM と JavaScript グローバル オブジェクトを検査し、見つかった情報を世界中のどこにでも送信できます。スクリプト タグ ハックは安全ではないため、避ける必要があります。

http://javascript.crockford.com/script.html

実際には参考にはなりません: これがうまくいかない場合、誰も Google の CDN から jQuery を含めて、その$.ajaxメソッドを使用することはできませんでした。

于 2012-09-22T12:59:58.140 に答える