我需要一个 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/