gmail如何使用ajax?

时间:2012-01-08 04:47:29

标签: javascript google-closure-library

看看firebug,gmail发送GET请求得到类似的东西:

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

1 个答案:

答案 0 :(得分:6)

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

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