gmail如何使用ajax?

ali*_*ali 3 javascript google-closure-library

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

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

bdo*_*lan 6

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

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