7

私は最近 jQuery を使用していて、XmlHttpRequest が同じオリジン ポリシーを使用しているため、ユーザー スクリプトに含めることができないという問題に遭遇しました。さらにテストを行った結果、ほとんどのブラウザーは、同じオリジン ポリシーの問題の回避策として、W3C によって定義されたクロス オリジン リソース共有アクセス制御もサポートしていることがわかりました。httpヘッダーを含むローカルWebサーバーでjQueryスクリプトをホストすることでこれをテストしました。これによりAccess-Control-Allow-Origin: *、XmlHttpRequestを使用してスクリプトをダウンロードできるようになり、ユーザースクリプトに含めることができました。スクリプトをリリースするときに jQuery のホストされたバージョンを使用したいのですが、これまでのところhttp://www.seoconsultants.com/tools/headersのようなツールでテストしていますjQuery スクリプトへのクロスオリジン アクセスを許可するサイトは見つかりませんでした。これまでにテストしたリストは次のとおりです。

クロス オリジン アクセスを許可するホストされている jQuery のバージョンは他にありますか? jQuery は通常、スクリプト タグ (動的に作成されたスクリプト タグの場合もある) を介して読み込まれることはわかっていますが、この特定のケースでは、XmlHttpRequest と Eval を使用して、正しいスコープに読み込まれるようにする必要があります。Google Chrome はユーザー スクリプトをサポートしていますが、@require はサポートしていません。つまり、 Google Chrome のユーザー スクリプトで jqueryを使用する唯一の方法は、 jquery を.user.js ファイルに埋め込むか、XmlHttpRequest を介して読み込んで評価することです。埋め込みは最適なソリューションとは言えません。Chrome 拡張機能を使用すると拡張機能に jQuery js ファイルを含めることができますが、ユーザー スクリプトの方がはるかにシンプルで、複数のブラウザーで動作できるため、ユーザー スクリプトを使用することをお勧めします。私はすでに両方のチケットを提出しましたGoogle Ajax APIjQueryチームは、CDN へのクロス ドメイン アクセスを許可しますが、今のところ自分でホストする必要があると思います。

4

3 に答える 3

2

あなたがこの質問をしたので、Google CDN は要求に応じてこれらのヘッダーを追加しました。https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.jsをすばやく GETすると、ヘッダーが生成されます。

access-control-allow-origin:*

したがって、次のようなスクリプト タグを追加すると、準備完了です。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" crossorigin="anonymous" type="text/javascript"></script>
于 2014-08-10T10:09:05.783 に答える
2

私はこれと同じ問題を抱えていましたが、私の解決策はファイルを自分でホストすることになりました。私自身のホスティングでは、jQuery スクリプトのクロスドメイン リクエストを許可できました。

私はこれを回避するために多くのフープを飛び越えようとしましたが、クロスドメイン アクセスを許可するスクリプト ホストを見つけ出して試すのに何時間も費やしました。しかし最終的には、ホストされているスクリプトの不明なバージョンに依存する場合は、自分でホストする方がよいという結論に達しました。検討していたホストよりも自分自身を信頼しているためです。

于 2011-09-19T13:18:06.247 に答える
2

Amazon Cloudfront では、Access-Control-Allow-Origin ヘッダーを設定できます。基本的に、jQuery を自分でホストし、その前に Cloudfront CDN を貼り付けると、Cloudfront は設定したヘッダーをクライアントに中継します。

your jQuery -> Cloudfront jQuery -> Client Browser
[header set]   [header set]         [header set]

Cloudfront CDN は Amazon ユーザーごとに設定されます。ホストされた Google API と比較した場合の欠点は、サイトへの初めての訪問者が別のサイトにアクセスして jQuery をロードしていないことです (したがって、キャッシュの恩恵を受けます)。

于 2012-02-24T12:50:47.490 に答える