わかりました、私はそれを理解したと思います。for(;;);の理由 特定の情報のクロスドメインデータ要求を防ぐためにあります。したがって、基本的に、保護しようとしている情報がある場合は、通常のAjax JSONチャネルを経由し、複数のサーバーにデータを保存している場合は、サーバーレベルで処理します。
JSONPリクエストは実際にはリモートスクリプトインクルードです。つまり、サーバーが出力するものはすべて実際のJavascriptコードであるため、for(;;);
beforeがある場合は_callbacks_.callback();
、リクエストが成功するとコードがオリジンドメインで実行されます。無限ループの場合は、明らかにページが詰まります。
したがって、通常の実装方法は次のとおりです。
- 同じサーバー上にあるファイルに通常のAjaxリクエストを送信します。
- サーバーレベルのものを実行し、暗号化されたCURLを介して外部サーバーにリクエストを送信します。
- サーバーの応答にセキュリティを追加します(a
for(;;);
またはwhile(1);
orthrow(1);
の後に文字列が続き<prevent eval statements>
ます。
- 応答をテキスト文字列として取得します。
- 文字列からセキュリティ実装を削除します。文字列(現在は「JSON文字列」)を、標準のJSONパーサーを使用してJSオブジェクト/配列などに変換します。
- データを使ってやりたいことは何でもしてください。
私はグーグルで適切な情報を見つけられなかったので、誰かが将来グーグルする場合に備えて、これをここに出すべきだと思った。これは、クロスドメインリクエストフォージェリを防ぐのに役立ちます。