クロスドメイン リクエストがウェブサイト上にある場合、Google の API はどのようにしてクロスドメイン リクエストを Google に返すのでしょうか?
5 に答える
ドキュメントの head に script タグを動的に挿入することで、この問題を回避しています。このインジェクションを介して送信される JavaScript にはコールバック関数が含まれており、ページで実行されているスクリプトに、ロードしたこととペイロード (データ) を通知します。
その後、スクリプトは動的に挿入されたスクリプト タグを削除して続行できます。
受け入れられた答えは間違っています。ベンは正しいです。以下は、 Google API JavaScript Clientを使用してページから引き出された実際の iframe ノードです。
<iframe name="oauth2relay678" id="oauth2relay678"
src="https://accounts.google.com/o/oauth2/postmessageRelay?
parent=https%3A%2F%2Fwww.example.com.au#rpctoken=12345&forcesecure=1"
style="width: 1px; height: 1px; position: absolute; left: -100px;">
</iframe>
このしくみの基本的な概要は、http: //ternarylabs.com/2011/03/27/secure-cross-domain-iframe-communication/にあります。最新のブラウザーでは HTML の postMessage を利用してコミュニケーションを実現し、古いブラウザーではきちんとした複数の iframe-urlhash-read+write-combination ハックを使用します。Ternary Labs は、基本的にすべてのブラウザーで postMessage を提供する、すべてのハッキーなものを抽象化するライブラリーを作成しました。
いつの日か、このライブラリの上に構築して、クロスドメイン REST API を簡素化する予定です...
編集: その日が来て、XDomain はここにあります - https://github.com/jpillora/xdomain
私の知る限り、彼らはIFRAMEを使用しています。
もう 1 つの可能性は、ここでwindow.name
dojo フレームワークについて説明されているように、トランスポートを使用することです。