3

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

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

有:

for (;;); {"t":"heartbeat"}
{"t":"heartbeat"}
{"t":"continue","seq":0}

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

4

2 回答 2

5

这不是 JSONP;它是 JSON,如果用作 JSONP,它会被故意修改为失败。

如果您在标签中包含该 URL <script>,它会将浏览器冻结在无限for循环中。

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

于 2012-12-06T19:09:11.887 回答
3

这是出于安全原因。JSONP实际上不是JSON,它是一个执行的 JavaScript 文件。

它就for(;;);在那里,因此如果人们(Facebook 以外的人)试图访问该文件,他们就无法访问。

注意:这不是 JSONP,但您的浏览器不知道。它会尝试运行它,然后陷入无限循环。

于 2012-12-06T19:07:19.293 回答