为啥我只从本地主机获得公共 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 错误

本地主机和设备上的 Ionic 的 CORS 问题[关闭]

从我的本地主机客户端发出请求而没有 cors 错误

为啥我的 Axios fetch 会出现 CORS 错误?

由于 CORS 限制,无法使用 firebase 在本地进行测试

带有亚马逊产品 API 的 Angular CORS