为啥我只从本地主机获得公共 API 的 CORS 错误
Posted
技术标签:
【中文标题】为啥我只从本地主机获得公共 API 的 CORS 错误【英文标题】:Why do I get CORS error with public API from localhost only为什么我只从本地主机获得公共 API 的 CORS 错误 【发布时间】:2019-11-30 15:52:23 【问题描述】:我正在使用公共 API 来庆祝命名日。我昨天实现了该功能,一切正常。今天,在没有对代码进行任何更改的情况下,它抛出了 CORS 错误。我不明白的是,如果你在浏览器中使用 url (https://api.abalin.net/get/today),你会得到 JSON 响应。如果我将 fetch 设置为 mode: 'no-cors',我会收到此响应。
我正在使用 fetch API,并且我已经尝试了各种 CORS 选项和标头,但没有任何帮助。我还尝试了 chrome 控制台,它也可以正常工作。
有谁知道问题的原因是什么?
【问题讨论】:
您无法从 localhost 访问另一个域。它是跨域访问。为了使其工作,您需要从服务器允许它。或者,您可以在客户端代码中使用 jsonp 或其他方法。 昨天工作得很好。 API 不应有任何 CORS 阻止策略。 使用代理发出请求...您自己的或第三方服务 我尝试使用 XMLHttpRequest 从 html 文件中调用此 URL,它确实有效。 @fiveelements 它对我来说也适用于任何地方,除了 react 应用程序.. 【参考方案1】:我部分解决了这个问题。问题出在 HTTP 缓存上。当我使用cache: 'reload'
选项重新加载缓存时,它下载了新数据。不过,我仍然不知道为什么会发生 CORS 错误。明天我会再次观察这种行为,因为 nameday 每天都在变化。
【讨论】:
以上是关于为啥我只从本地主机获得公共 API 的 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试从反应应用程序的本地主机 Web api 端点获取数据 - Cors 错误