Possible Duplicate:
Why do people put code like “throw 1; <dont be evil>” and “for(;;);” in front of json responses?
我发现这种语法在 Facebook 上用于 Ajax 调用。我对响应开头的 for (;;);
部分感到困惑。它是干什么用的?
这是调用和响应:
GET http://0.131.channel.facebook.com/x/1476579705/51033089/false/p_1524926084=0
回复:
for (;;);{"t":"continue"}
最佳答案
我怀疑它存在的主要原因是控制。它强制您通过 Ajax 检索数据,而不是通过 JSON-P 或类似的(使用 script
标签,因此会失败,因为 for
循环是无限的),从而确保 Same Origin Policy这让他们可以控制哪些文档可以发出对 API 的调用——具体来说,只有与该 API 调用具有相同来源的文档,或者 Facebook 通过 CORS 专门授予访问权限的文档。 (在支持 CORS 的浏览器上)。因此,您必须通过浏览器强制执行 SOP 的机制来请求数据,并且您必须了解该前言并在反序列化数据之前将其删除。
是的,它是关于控制(有用的)对数据的访问。
关于ajax - 像 'for (;;); { json data }' 这样的 Ajax 调用响应是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339790/