javascript - 如何在未经身份验证的情况下通过 XHR (CORS) 访问公共(public) Google Drive 文件?

标签 javascript xmlhttprequest google-drive-api cors

我需要一个 HTML 页面来使用 Javascript 中的 XMLHttpRequest (XHR) 访问 Google 云端硬盘文件而无需身份验证(因此我的用户不必登录或拥有 Google 帐户)。这些文件具有“任何有链接的人”的权限。由于这些文件对全世界开放(有链接),我不明白为什么允许对它们进行跨源资源共享 (CORS) 会成为问题。

downloadUrl 需要身份验证,所以我想这不是一个可行的选择。我还查看了 webViewLink,我想这需要文件“在网络上公开”- 我猜想出现在搜索引擎等中。这对我来说也不是一个可行的选择。我需要这些文件的“任何有链接的人”权限。最有前途的链接是 webContentLink,根据 http://googleappsdeveloper.blogspot.se/2012/08/5-things-you-didnt-know-you-could-do.html允许公开和未经身份验证的访问。

webContentLink 的问题是它似乎对 CORS 不友好。我在 Chrome 中使用 XHR 的尝试失败了(非常安静)。我不添加任何标题。

我尝试使用 curl 使用 --header "Origin: http://www.hello.se" 以及使用和不使用 --header "Access-Control-Request-Method: GET" 导致 HTTP/1.1 302 临时移动 重定向到一个短暂的内容 URL。问题是重定向响应没有启用 CORS 所需的 Access-Control-Allow-Origin header 的迹象。

有什么我可以做的不同的事情来让它工作吗?

否则,Google SDK 团队能否使 webContentLink CORS 对公共(public)文件(不需要 cookie 身份验证)友好,好吗?

最佳答案

JSONP 似乎是从客户端动态获取 google 表格的唯一方法:

1) 在 Google 云端硬盘中,在网络上发布文档并将共享选项设置为公开

2) 使用 JSON 类型链接以 JSON 格式导出您的数据,它看起来像:“http://spreadsheets.google.com/feeds/list/YOUR_FILE_ID/od6/public/values?alt=json&callback=myCallback”。您需要附加 &callback=myCallback 才能使用 JSONP。您可以使用 jQuery 进行 JSONP 调用。

3) 定义一个window.myCallback JS函数来使用数据

关于javascript - 如何在未经身份验证的情况下通过 XHR (CORS) 访问公共(public) Google Drive 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212616/

相关文章:

javascript - Q promises - 数组中每个元素的 Node.js 函数

javascript - 使用 XHR 的多部分表单数据 - 无效请求

Ruby Mechanize 带有标题的帖子

javascript - Microsoft OAuth 不返回刷新 token

javascript - 如何通过使用 ajax 从数据库获取 json 数据,使用 javascript 将 case 添加到 switch 语句?

java - 使用 Google Drive API 获取文件大小

javascript - 谷歌云端硬盘 API

google-drive-api - 在 Google Colab 中安装 Google Drive 的持久授权

javascript - 如何检查是否设置了 Google Analytics 自定义变量( session 范围)

javascript - XMLHTTPRequest 响应不包含 header 中的 Location 字段