google docs /pub?...output=csv 不再具有 CORS 标头

问题描述 投票:0回答:2

我有一个 angularjs SPA。

它通过 XHR 调用:

https://docs.google.com/spreadsheets/d/e/xxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxx-/pub?gid=0&single=true&output=csv

基本上以 CSV 形式提供谷歌表格

从几天开始,我看到了重定向,并且不再有 CORS 标头。之前就有 CORS 标头。

API有改变吗?是否有一些带有 CORS 标头的新 API?

PS:我的解决方法如下所示(在我的 ftp/php 主机上):

<?php
$url = 'https://docs.google.com/spreadsheets/d/e/xxxxxxxxxxxxxx/pub?gid=0&single=true&output=csv';
$response = file_get_contents($url);
echo $response;
google-sheets-api export-to-csv
2个回答
2
投票

您可以使用Drive API方法文件:导出

使用

Try this API
将为您提供必须发送的链接,如下所示:

GET https://www.googleapis.com/drive/v3/files/FILE ID/export?mimeType=text%2Fcsv&key=[YOUR_API_KEY] HTTP/1.1

Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json


1
投票

作为解决方法,您可以将该 csv 缓存在服务器本地:

curl -s -L -o data.csv 'https://docs.google.com/spreadsheets/.../pub?...&output=csv'

更新例如每小时:

# /etc/crontab:
0 * * * * su -c '/home/your-user/path-to/cache-data.bash' your-user
sudo systemctl restart crond

并提供缓存的 csv 数据,例如nginx:

# nginx.conf:
server {
  # ...
  add_header Access-Control-Allow-Origin *;
  # ...
}
sudo sbin/nginx -s reload
© www.soinside.com 2019 - 2024. All rights reserved.