【问题标题】:CORS error when trying to open files from Google Drive v2 API尝试从 Google Drive v2 API 打开文件时出现 CORS 错误
【发布时间】:2020-06-08 21:16:56
【问题描述】:

我在https://app.mindmapmaker.org 托管一个网络应用程序

我使用 Google API 从 Google Drive 读取和保存文件。

转到我的网络应用程序。然后从菜单中,通过菜单“文档”->“打开”->“打开”(在 Google Drive 下方)和“文档”->“另存为..”->“保存”(在 Google Drive 下方)调用它)

从上周开始,从 Google 云端硬盘打开文件时出现问题。保存文件没有问题。

打开时,我在 Chrome 浏览器的控制台日志中收到此消息:

从源“https://app.mindmapmaker.org”访问“https://00e9e64bacb81ac463650ab754319d41f4469e8ae3f0d4efe7-apidata.googleusercontent.com/download/drive/v2/files/1TpPiniJUuVBgakcujo8TP-f-U8ovkHhb?qk=AD5uMEthpuLU3VV0nxYsl6lQ9J9tyL51LyZ0vo4HBJ1K8ubIinpwcXqIicmHanPDUUOp53WvBZYhjYFCHgjkSANG7WiX1Zs5tepeXqj-m5Pr8zM-5MPjiC67vKoq1D-yDGLuaP2wOSJEmlGjiGlafeE4Irr44qz9S9X4GZIf7YhJ2ze_Ls4YlgrFYUGzeYLhLVOgQfVz8Q6oP-WkLwHtAqbwpi9ZOeUxU_8CYliomPoaIZ3nuw_37IMiCkgSil90WXLm1bvmSrOaggJzIh40EbWoPem7lRr7Erquh6EZcOxFAAT4Ez8u-J2lCYYwAwlY8Y82-SNIeFSf8J9FrfKT3qCLsDrsb4ZJbb44TWWcyf8ZGWOM0J9Z-WvVvFAjnpjXU4WH0k-9YgNCgPmGtJ6M1Rnvv9x5xhDthyPB-29tHWU8wzMZTvfMucf0KfkiigHhLybZQdycXGBiDdMFlRv7RsA40S6jyJV6exeAjSUUCt8El0jkQhs877Bacps_XXTdr10WulNB-cjOXOU36hyOmr7k4f2Gzz51lJkt6WiiCGJMw3V-ILV-abaVCxo-ukH5fFVCvulvPqWtCNRJKtiVW5gHqnIVWss7ELtbpN68Z__KTeVl3P6eBDMDuhLtm2yjVq6qLEny_ygE_hWRIiX4ibK1JPv7X5X1vsKo4manbRsJ7GbmahxP4xeTZTXcOuT-SqzET4TRlzWwlQHtcEj1Su8Kpkp2VY2ZT5Twsp2afX5rIYNInlDoGQBLgf1zkH3iuSLcHx2bTf1Nklo01Z79Svx2ZTh0rb8dOAU0Q58x-ViNs0E0XdoKZ5W1v4tHiCObqYuIgjn7Aw3C2HsYwLR7HrNDuBcfqD3k4kWQzIqT21EZITZLrLl7X7wCNtPE7RrHfRb6KWR73v9Nh2CHLLOMg7Z5Gi3RkS6un2atfzy4xQamI9blpjwVe6kTPa5DbL6skYd6r26BRw98oA1rhqvxMNGeCxrmdSvpgdfgTc96Xa-41G1XaD_z5o-NeGrD2-Y7e9AjzReN2kkauTVYl6jcwn1V20oGu36Y0oW1MlnnPg363ZQ0Hd49htI”处的 XMLHttpRequest(从“https://content.googleapis.com/drive/v2/files/1TpPiniJUuVBgakcujo8TP-f-U8ovkHhb?key=AIzaSyAFn0-DGYnY1oOJ2pQfPpbc6zDeALMqmeg&alt=media&source=downloadUrl”重定向)已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否“访问” -Control-Allow-Origin' 标头存在于请求的资源上。

如何解决这个问题?任何帮助,将不胜感激。我需要在 Google Console API 中修改任何内容吗?

我正在使用 nginx 服务器。

我已经尝试添加标题,例如

location / {
    add_header Access-Control-Allow-Origin *;
}

但它不起作用。

请帮忙。

【问题讨论】:

  • 欢迎来到 StackOverflow!您是否努力搜索错误消息?你会发现很多可能对你有帮助的东西。
  • 我做了,但我找不到适合我的解决方案。
  • 嗨!您能否分享一段您的代码(如果有)和/或以下截图:通过菜单调用,“文档”->“打开”->“打开”(在 Google 云端硬盘下方) ) 和“文档”->“另存为..”->“保存”(在 Google 云端硬盘下方)?因为我不明白你的意思。
  • 转到我的应用程序,app.mindmapmaker.org 您可以在右上角看到“文档”菜单。在那里你可以点击'文档'->打开和'文档'->另存为......这就是我的意思。从 Google Drive 打开文件时,它在控制台中显示,被 cors 策略阻止,不存在“access-control-allow-origin”标头它仅从几天开始出现。
  • 我用于从 Google Drive 打开/保存文件的代码,检查这个文件,mindmapmaker.nl/eng/js/GoogleDrive.js 谢谢

标签: google-api google-drive-api


【解决方案1】:

我终于找到了解决办法。不知道是临时修复还是永久修复。

我从https://developers.google.com/drive/api/v2/reference/files/get找到了解决方案

在下载代码中,在Javascript中,我们使用

xhr.open('GET', file.downloadUrl);

我们应该使用而不是 file.downloadUrl,

downloadUrl = "https://www.googleapis.com/drive/v2/files/" + fileId; 
xhr.open('GET', downloadUrl);

将 fileId 替换为 Google Drive 中文件的 fileId。

您可以在https://app.mindmapmaker.org 观看演示,您可以在那里从 Google Drive 打开一个 .json 文件。

你也可以在这个网站上看到一个演示,http://mindmap.kwebpia.net/

【讨论】:

  • 还没有为我工作,但一个完善的答案激发了我的想法并给了我线索。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 2011-10-06
相关资源
最近更新 更多