次のJSONP応答構文を使用する理由は何ですか?
URLの下:https ://ect.channel.facebook.com/probe?mode = stream&format = json
がある:
for (;;); {"t":"heartbeat"}
{"t":"heartbeat"}
{"t":"continue","seq":0}
私の質問は、for(;;);
このJSONP応答で正確に何をするかということです。どのように解析されますか?
次のJSONP応答構文を使用する理由は何ですか?
URLの下:https ://ect.channel.facebook.com/probe?mode = stream&format = json
がある:
for (;;); {"t":"heartbeat"}
{"t":"heartbeat"}
{"t":"continue","seq":0}
私の質問は、for(;;);
このJSONP応答で正確に何をするかということです。どのように解析されますか?
これはJSONPではありません。これはJSONであり、JSONPとして使用すると失敗するように意図的に変更されています。
そのURLをタグに含めると、ブラウザが無限ループ<script>
でフリーズします。for
これにより、攻撃者がそれを外部サイトに含めたりObject.defineProperty
、セッター関数を作成してSOPをバイパスしたりすることを防ぎます。
それはセキュリティ上の理由からです。JSONPは実際にはJSONではなく、実行されるJavaScriptファイルです。
そこfor(;;);
にあるので、(Facebook以外の)人々がそのファイルにアクセスしようとしても、アクセスできません。
注:これはJSONPではありませんが、ブラウザはそれを認識していません。それを実行しようとすると、無限ループに陥ります。