3

查看萤火虫,gmail 发送 GET 请求以获取以下内容:

while (true); &&&START&&&{"Success":true,"Body":{"Contacts":"[[,[,,\"83473f5sc6b17e0\",,[[,1,\"1\"]\n]\n[,,,[,,[,[,,,,,,,,,,,[[,1]\n
...
} &&&END&&&
  • 这些数组是什么?这些是某种RPC吗?
  • 客户端代码如何使用它们?更具体地说,闭包库将如何使用它们?
  • 这种方法比普通的 json 和 REST 有什么优势?
4

1 回答 1

6

看起来像普通的 JSON,很可能是对 RPC 的响应,但主体以某种方式编码(可能是为了减少大小并因此减少带宽使用)。这while (true);一点是为了避免使用指向 RPC 端点的脚本标签来避免跨站点访问数据——通过在脚本到达多汁的私人信息之前使脚本崩溃,它可以防止恶意站点使用数据。JSON.parse在剥离开始和结束标记之外的所有内容之后,解析将使用或类似。

如果您正在运行像 gmail 这样的大型网站,并且可以控制客户端,这种压缩编码会很有帮助。然而,REST 对于第三方开发人员非常有用,因为它更容易调试(和记录!)。然而,对于任何允许 GET 并在响应中携带敏感数据的 API,这些while(true)位都是必不可少的。

于 2012-01-08T04:53:14.797 回答