【发布时间】:2019-11-06 16:36:36
【问题描述】:
这个新问题只是因为我的旧问题已关闭。所以我什至无法回答。
Javascript fetch using a download URL from GCS
我很少遇到必须考虑 CORS 的情况,所以我忘了它。但这就是正在发生的事情。
我使用
fileRef.getDownloadURL()获得了 GCS 上文件的下载 URL。在 Chrome 选项卡中打开此 URL 时有效。
但是由于(坏)CORS,尝试使用 JavaScript
fetch失败。原则上,这可以通过
gsutil cors set ...解决(参见上面的问题)。但是,由于我使用的是测试环境(
firebase serve、localhost),因此似乎无法在gsutil接受的请求标头中为来源设置值。
因此,如果有人知道上述 5 的解决方案,我将不胜感激。 (当然,我可以使用解决方法,但我不希望这样做。)
顺便说一句,我尝试使用建议的代理服务器,但这里似乎被阻止了。
编辑:我还向 Google 提交了错误报告。但如果我错了就好了,而且这不是 Firebase 本地测试和 GCS 之间相互作用的错误。
【问题讨论】:
-
远非专家,我对 CORS 有所了解。此类问题通常可以通过让您自己的服务器充当下载代理来解决。 CORS 仅在您尝试从客户端 JS 获取某些内容时发挥作用,但据我所知,您这里有一个后端在玩,应该能够下载文件没问题。
-
@ChrisG 是的,我可以在 Firebase 端使用 Node.js 将文件下载到服务器,然后将其发送到客户端。但我宁愿避免它。效率低下。更多的工作。更多错误...
-
因此,您想要实现一个假设的、可能很复杂的解决方案,而不是实现一个相对简单、众所周知的解决方案?据我所知,
gsutil路由仅适用于实际主机,不适用于您的localhost测试环境。顺便说一句,这些文件首先是什么?为什么需要获取它们? -
@ChrisG 因为我尝试的代理服务器不起作用(请参阅我对已接受答案的评论)。是的,我需要获取文件,因为它们将在 PWA 中本地使用。
标签: javascript firebase cors google-cloud-storage fetch-api