Facebook中奇怪的JSONP响应

Mat*_*usz 3 javascript ajax jsonp

我想知道使用以下JSONP响应语法的原因是什么:

在URL下:https://ect.channel.facebook.com/probe?mode = stream&format = json

有:

for (;;); {"t":"heartbeat"}
{"t":"heartbeat"}
{"t":"continue","seq":0}
Run Code Online (Sandbox Code Playgroud)

我的问题是,for(;;);这个JSONP响应究竟做了什么.它是如何解析的?

SLa*_*aks 5

这不是JSONP; 它是JSON,如果用作JSONP则被delibaretly修改为失败.

如果您在<script>标记中包含该URL ,它将在infinte for循环中冻结浏览器.

这可以防止攻击者将其包含在外部站点中并调用Object.defineProperty以创建setter函数并绕过SOP.