チートシート=>クロスドメインAJAX。 動的スクリプトタグハック

(セキュリティ上の理由により)AJAXの基礎となるJavascriptオブジェクトXMLHttpRequestがクロスドメインコールを行えないことが歴史的に起こりました。 これは無用の制限です。攻撃者にとって特別な問題を引き起こすことはありませんが、開発者にとっては不便です。 次世代のブラウザーでは、彼らはこの問題を解決することを約束しましたが、W3Cが少なくとも新しい標準を承認する前にではありませんでした。



この制限を回避するためのハックの海がありますが、最も人気があるのはDynamic Sc​​ript Tag Hackです。 このハックを通じて、最新のWebアプリケーションの多くのAPIへのアクセスが編成されます。







エッセンス



XMLHttpRequestはまったく使用されません。 タグがページ上に動的に作成され、 別のドメインのターゲットアドレスが示されます。 バックグラウンドのブラウザは、リモートスクリプトのコンテンツをロードして実行します。 リモートスクリプト自体はJSONデータを転送し、次の形式の通常の関数呼び出しです。



callback_function(json_data);



`callback_function`関数はページ上に存在し、グローバルに表示される必要があります。 JSONで返されたデータを処理します。 このコールバック関数の名前は、クライアント側とサーバー側の両方で事前に知られているか、GETパラメータで渡される必要があります。次に例を示します。



src="http://example.com/api.js.php?callback_func=mycallback"







したがって、JSONデータを生成するリモートスクリプトは次のようになります。



<?php print $ _GET ['callback_func']。 '('。json_encode($ somedata)。 ')'; ?>



「結論」



ハック自体は非常に使いやすいですが、一部の開発者は理解できません。

クライアント側でJSONデータを解析することは非常に便利です。 追加情報が必要な場合は、こちらの記事をご覧ください: JavaScript Object Notation(JSON)の概要



カルマを十分に得たらすぐに個人的なブログから移動しました



All Articles