我想在Google Chrome中使用JavaScript fetch
从Google Cloud存储中下载文件。我有一个下载URL,如果将URL粘贴到地址栏中(显示文件,显示json文件),该URL会起作用。
但是,如果我在JavaScript控制台中执行此操作,则不会得到我期望的response object
。
u = (the download URL);
h = {"pragma":"no-cache",
"cache-control":"no-cache",
"mode":"no-cors",
"accept":"application/json"}
f = fetch(u, h);
f.then(r => console.log(r))
r
是预期的Response object
,但r.ok === false
和r.status === 0
。 r.type === "opaque"
。
我在做什么错了?
编辑:感谢@sideshowbarker提供指向您所认为的答案的指针。它有所帮助,但这不是答案。
答案似乎在@pteranobyte的注释中,但我还无法使它起作用。文档在这里,但我听不懂:https://cloud.google.com/storage/docs/gsutil/commands/cors
编辑2:我还尝试了使用代理服务器的建议解决方案。然后我得到错误"Missing required request header. Must specify one of: origin,x-requested-with"
。
此reddit线程表明代理服务器已被GCS阻止:
https://www.reddit.com/r/coinmetrics/comments/b1shxq/cors_error_when_using_your_api/
编辑3: 只需添加建议的“此问题在这里已有答案:”中的链接,因为如果该问题未标记为重复项,我不知道它是否消失。 (请告诉我。)在我的情况下,该链接包含有用的信息。
Trying to use fetch and pass in mode: no-cors
编辑4: 对于那些感兴趣的人,请参阅下面的注释以获取解决方案。 (它不是所建议问题的重复。)