根据spec,可以使用Drive API获取的文件元数据中的相应exportLinks
条目以不同格式下载Google文档。这些条目指定的URL支持CORS,因此可以从纯Javascript中使用它们,而无需代理。
这适用于大多数文件和文档类型(doc,presentation),但不适用于电子表格。当您在浏览器Javascript的电子表格exportLinks
网址上尝试XHR GET时,
Fri, 01 Jan 1990 00:00:00 GMT
curl
使用相同的Authorization,Referer,Origin标头进行GET返回电子表格,但响应标头不包含任何Access-Control-Allow-Origin
标头,因此它不会起作用浏览器。其他文档类型以OPTIONS和GET的预期方式运行,返回正确的Expires和CORS标头。
事实上,旧的电子表格 - 具有类似https://docs.google.com/feeds/download/spreadsheets/Export?key=XXX&exportFormat=xlsx
的exportLink网址的电子表格也可以使用。问题仅限于新工作表,其exportLink网址类似于https://docs.google.com/spreadsheets/export?id=XXX&exportFormat=xlsx
。
我使用以下步骤pigshell来解决此问题:
在pighell CLI中,
cd /gdrive/<username@gmail.com>
ls
gcat <docfilename> # Displays PDF version of doc
gcat <spreadsheetfilename> # CORS failure, examine browser console/devtools
gcat <spreadsheetcreatedyearsago> # Works
答案 0 :(得分:1)
这与此处提出的问题基本相同:
No 'Access-Control-Allow-Origin' header for exportLink
将Drive API与新版Google表格一起使用时似乎是一个众所周知的错误(其他Google文件类型和旧版本的工作表似乎没有问题)。不幸的是,没有已知的解决方法,除了“引入一个服务器端组件,它将下载文件然后将其传递给客户端。”