我需要一个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 Moved Temporarily
的尝试都会导致Access-Control-Allow-Origin
重定向到短暂的内容网址。问题是重定向响应没有webContentLink
标头的迹象,这是启用CORS所必需的。
我能做些什么来让它发挥作用吗?
否则Google SDK团队,您能否使{{1}} CORS对公共文件(不需要cookie身份验证)友好,请?
答案 0 :(得分:1)
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函数来使用数据
答案 1 :(得分:0)
您可以尝试使用JS Google API客户端。它通过下载代理iframe绕过CORS限制。