25

私は自分のウェブページにいるのか、ユーザーがいるのかを知っています:http: //www.example.com/form.php

そして私はそのページから次のアドレスにajaxリクエストを行います: http ://example.com/responder.php

同一生成元ポリシー(サブドメインが異なる)のために失敗します。

私が理解しようとしているのは、リクエストとサーバーが明らかに異なる場合に、AJAXリクエストがflickrのようなAPIからデータをプルできるのはどうしてかということです。


編集:

例:このコードが機能するのはなぜですか?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...'

このコミュニティWikiを参照)クロスオリジンリソースシェアリングを使用していますか?

ありがとう!

4

1 に答える 1

16

同一生成元ポリシーを回避するための既知の方法はほとんどありません。一般的な手法の1つは、 JSONPなどの「スクリプトタグインジェクション」を使用することです。<script>タグは同一生成元ポリシーによって制約されないため、サードパーティドメインのスクリプトは、提供されたコールバック関数と相互作用する実行可能コードを提供できます。このトピックの詳細については、次の記事の「ヒントとコツ」セクションを確認してください。

同一生成元ポリシーを回避するための他の手法の詳細については、次のStackOverflowの投稿を確認することもできます。


更新:さらに更新された質問:

に関するjQueryドキュメントからの引用$.getJSON()

URLに文字列「callback=?」が含まれている場合 URLでは、リクエストは代わりにJSONPとして扱われます。

于 2010-08-21T07:39:16.293 に答える