Как Gmail использует AJAX? - PullRequest
       14

Как Gmail использует AJAX?

3 голосов
/ 08 января 2012

Глядя на firebug, gmail отправляет GET-запросы, чтобы получить что-то вроде:

while (true); &&&START&&&{"Success":true,"Body":{"Contacts":"[[,[,,\"83473f5sc6b17e0\",,[[,1,\"1\"]\n]\n[,,,[,,[,[,,,,,,,,,,,[[,1]\n
...
} &&&END&&&
  • Что это за массивы?Это что-то вроде RPC?
  • Как они используются клиентским кодом?В частности, как их будет использовать библиотека закрытия?
  • В чем преимущество этого подхода перед обычным json и REST?

1 Ответ

6 голосов
/ 08 января 2012

Выглядит как обычный JSON, скорее всего, ответ на RPC, но с каким-то образом закодированным телом (возможно, для уменьшения размера и, следовательно, использования полосы пропускания). Бит while (true); предназначен для предотвращения межсайтового доступа к данным с использованием тега сценария, указывающего на конечную точку RPC - сбой сценария до того, как он достигнет сочной частной информации, может предотвратить использование данных злыми сайтами. Вместо этого при разборе будет использоваться JSON.parse или аналогичный, после удаления всего, что находится за пределами начального и конечного тегов.

Этот вид сжатого кодирования может быть полезен, если вы работаете с таким огромным сайтом, как gmail, и имеете контроль над клиентской стороной. Однако REST очень полезен для сторонних разработчиков, так как его легче отлаживать (и документировать!). Однако while(true) биты необходимы для любого API, который разрешает GET и несет в ответе конфиденциальные данные.

...