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

这个问题在这里已经有了答案:
关闭10年前.

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/

相关文章:

jquery - 将数组传递给 $.ajax() 中的 ajax 请求

javascript - 打印 JSON 解析的对象?

json - 如何修改新 PostgreSQL JSON 数据类型中的字段?

c# - 在 C# 中读取和解析 Json 文件

json - 如何在 Go 的 POST 请求中发送 JSON 字符串

php - 如何使用 PHP 从 JSON 中提取数据?

c# - 使用 C# 反序列化 JSON

java - Gson - 从 Json 转换为类型化的 ArrayList

arrays - 如何使用jq根据内部数组中的值过滤对象数组?

java - Java 中的 pretty-print JSON