Согласно spec, Документы Google можно загружать в разных форматах с использованием соответствующей записи в метаданных файла, полученных с использованием API-интерфейса накопителя. URL-адреса, указанные этими записями, поддерживают CORS, поэтому их можно использовать из чистого Javascript без прокси.CORS on exportLinks для таблиц Google Docs не работает
Это работает для большинства файлов и типов документов (документ, презентация), но не для электронных таблиц. При попытке к XHR GET на табличный exportLinks
URL из браузера Javascript,
- Запрос OPTIONS возвращает правильный ответ, но он имеет Истекает заголовок
Fri, 01 Jan 1990 00:00:00 GMT
- Браузер дает в этот момент (вероятно, из-за к истечению)
- Выполнение GET с тем же авторизацией, Referer, Origin headers с использованием
curl
возвращает таблицу в порядке, но заголовки ответов не содержат заголовокAccess-Control-Allow-Origin
, поэтому он не работал бы в браузере.
Другие типы документов ведут себя ожидаемым образом для ОПЦИЙ и GET, возвращая правильные заголовки Expires и CORS.
Фактически, старые таблицы - те, у которых есть URL-адреса exportLink, которые выглядят как https://docs.google.com/feeds/download/spreadsheets/Export?key=XXX&exportFormat=xlsx
, также работают. Проблема ограничивается новыми листами, чьи URL-адреса exportLink выглядят как https://docs.google.com/spreadsheets/export?id=XXX&exportFormat=xlsx
.
Я ударил этот вопрос с pigshell, используя следующие шаги:
- Посетите pigshell с помощью настольного браузера (Chrome/Firefox/Safari)
- Attach учетную запись Google, нажав на значок Google в rightbar
В CLI pigshell,
cd /gdrive/<[email protected]> ls gcat <docfilename> # Displays PDF version of doc gcat <spreadsheetfilename> # CORS failure, examine browser console/devtools gcat <spreadsheetcreatedyearsago> # Works
Спасибо. Так или иначе пропустил этот вопрос. Жаль, что простой простой отказ не был исправлен в течение нескольких месяцев, и, что более того, даже не появляется в списке открытых проблем. – ganeshv
эй @ryanroth, знаете ли, эта проблема решена? – Slava32