ajax - 像 'for (;;); { json data }' 这样的 Ajax 调用响应是什么意思?

标签 ajax json facebook

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/

相关文章:

iphone - iOS facebook 整合方法

ios - 在 Swift 中打开图表故事得到全白屏幕

facebook - 本地货币支付/重大更改不起作用/错误代码 : 1353028

jquery - Ajax 请求等待第一个 AJAX 调用未完成

javascript - 解析 JSON 的有效方法

javascript - 获取和使用 JSON 对象键名

json - 将 JSON 发布到 WebAPI2 函数

java - Ajax 调用后从 Java 下载 ZIP

java - 如何在 servlet 中处理发布的字符串数组?

javascript - Yii 中的 Ajax - 类型 : post