6

私が理解していることから、現在のブラウザーでの「同一生成元ポリシー」の強制により、Javascript の元のドメインとは異なるドメインに送信された XmlHttpRequest からデータを取得することは不可能です。

私はこの件に関して経験がほとんどないので、Web サービスが Javascript から使用できないことに戸惑っています。Ajax 機能を備えた Web アプリケーションは、他のドメインが提供するサービスを呼び出さずに、自分自身とのみ対話できるということですか? 「マッシュアップ」はどのように機能しますか? サービスはサーバー側で消費され、データはローカルの Ajax 呼び出しを介してクライアントに渡されると思います。知らない。

クライアント側でサービスを利用するために想像できる唯一の方法は、<script>タグを介してターゲット Web サービスのドメインから Javascript ファイルを直接取得し、その API を使用してリモート ドメインと対話することです。

誰でも私を啓発できますか?

4

2 に答える 2

6

あなたの質問では、 <script> トリックについて言及しました。JSONP はそれに基づいています。これは、ほぼ 3 年前に Bob Ippolito によって正式に提案されました。スクリプトのオリジンと対話する権利はありません — オリジンは Web ページによって定義され、他のものが含まれているわけではありません。これが機能するのは、サーバーが JSON をコードで定義する必要がある calback 関数でラップし、ロード時に <script> によって実行されるためです。JSONP の最も有名な例は、Flickr を含む Yahoo サービスです。

もう 1 つの手法は、window.name を使用して情報を転送することです。この手法は、4 か月前に Kris Zyp によって詳細に説明されました。さらに、彼の記事では window.name トランスポートを JSONP と比較しています。この新しいトランスポートをサポートしている有名なサービス プロバイダーは知りません。明らかに、それは時間の経過とともに変化します。

もちろん、今後のMicrosoft XDomainRequestについて言及する必要があります。IE8 と共に出荷される予定であり、他のベンダーはそれをサポートすることを約束していませんが、HTML 5 に含めるために提示されました。受け入れました。

リンクを調べた場合は、これらすべての方法でサードパーティのサーバーからの一定レベルの協力が必要であることをご存知でしょう。ランダムなサービスを自由に使用することはできません。非協力的なサービスを使用する必要がある場合、唯一の解決策は、関連するすべての問題を抱えた独自のサーバーを介してそれをプロキシすることです。合法性の問題、パフォーマンスの低下、サーバーの負荷の増加、ユーザーのブラウザーとの間の接続数の減少。あなたのサーバーなど。

于 2008-11-28T00:56:06.070 に答える
3

あなたが説明しているほとんどのアプローチを使用して同じオリジンポリシーを回避するJSONPを見てください。どこから入手したかを信頼してください...

于 2008-11-27T23:06:42.797 に答える