クライアント側のスクリプトからリモートWebサービスを使用するにはどうすればよいですか? [閉まっている]
-
11-07-2019 - |
質問
<!> quot;同じ起源ポリシー<!> quot;のため、私が理解したことから現在のブラウザでは強制されているため、Javascriptの元のドメインとは異なるドメインに送信されたXmlHttpRequestからデータを取得することはできません。
この問題に関してはほとんど経験がないので、JavascriptでWebサービスを使用できないことについて混乱しています。 Ajax機能を備えたWebアプリケーションは、他のドメインが提供するサービスを呼び出さずに自分自身としか対話できないということですか? <!> quot;マッシュアップ<!> quot;仕事?サービスはサーバー側で消費され、データはローカルAjax呼び出しを介してクライアントに渡されると思います。わからない。
クライアント側でサービスを消費することを想像できる唯一の方法は、<script>
タグを介してターゲットWebサービスのドメインから直接Javascriptファイルを取得し、そのAPIを使用してリモートドメインと対話することです。
誰でも私を啓発できますか?
解決
質問で<!> lt; script <!> gt;について言及しました。トリック。 JSONPはそれに基づいています。 ほぼ3年前にボブイポリートによって正式に提案されました。スクリプトの起源と話す権利をあなたに与えるものではありません<!>#8212;起源は、それが含む他のものによってではなく、Webページによって定義されます。サーバーがJSONをcalback関数でラップするためにのみ機能します。これは、コードで定義する必要があり、<!> lt; script <!> gt;によって実行されます。ロードされたとき。 JSONPの最も有名な例は、FlickrなどのYahooサービスです。
別の方法は、window.nameを使用して情報を転送することです。 この手法は4か月前にKris Zypによって詳しく説明されました。さらに彼の記事では、window.nameトランスポートをJSONPと比較しています。この新しいトランスポートをサポートする有名なサービスプロバイダーは知りません。明らかに時間とともに変化します。
もちろん、今後の Microsoft XDomainRequest 。 IE8とともに出荷される予定であり、他のベンダーはサポートしていませんが、HTML 5に含めるために提示されました。XDRは便利な機能ですが、変更される前に何度か変更されると思います
これらの方法はすべて、サードパーティのサーバーからの一定レベルの協力が必要であることを、今までに知っているリンクを調べたと思います。ランダムサービスを自由に使用することはできません。非協力的なサービスを使用する必要がある場合、唯一の解決策は、疑わしい合法性、パフォーマンスの低下、サーバーの負荷の増加、ユーザーのブラウザ間の接続数の減少、サーバーなど。
他のヒント
JSONPを見てください。JSONPは、説明しているアプローチとほぼ同じ方法を使用して同じ生成元ポリシーを回避します。