首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >公共API在create-react-app中调用axios时出现CORS错误,但在Chrome和Postman中一切正常

公共API在create-react-app中调用axios时出现CORS错误,但在Chrome和Postman中一切正常
EN

Stack Overflow用户
提问于 2019-05-28 02:29:51
回答 1查看 606关注 0票数 1

请原谅我犯下的明显的错误...

我理解CORS,了解它是如何使用的,为什么使用它。但在这种情况下,我忽略了明显得令人眼花缭乱的东西。

我正在尝试访问一个公开可用的API,它应该工作得很好(我得到了保证)

如果我在Chrome或Postman中找到了端点,一切都会正常工作:返回一个非常棒的JSON。

当我试图从我的create-react-app的componentDidMount中使用axios执行相同的操作时,我得到了一个CORS错误,特别是

代码语言:javascript
运行
复制
Access to XMLHttpRequest at 'http://some-interesting-url/sub-url?blabla=blip&foo=bar' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我到底有什么不能掌握的?从我这方面有什么我能做的吗?(我无法控制服务器)

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 02:58:50

Postman应用程序不是浏览器,因此它不受CORS规则的约束。在浏览器中,尝试直接访问URL也不会触发跨域请求共享策略。根据定义,CORS只会影响从一个网页的后台JS代码向另一个不在同一域名上托管的网页或API发出的“跨域”请求。

根据发布的错误,有问题的应用程序接口没有发送Access-Control-Allow-Origin报头。如果有可能更改API,那么您应该将头部添加到响应中(值为'*',或者您的域名)。但是,如果这是不可能的,那么您需要通过您拥有的web服务器路由请求,并在其中包含此标头。这种方式的工作方式与代理类似,但适用于特定的用例。

如果您已经有一些服务器端应用程序正在运行,则只需向应用程序添加另一个端点即可。对此新终结点的调用应触发“Public API”调用,并将响应发送回客户端。由于服务器端程序(如PHP/Python/NodeJS)永远不会是浏览器,因此它们不会面临CORS问题。如果您的原始网页也是从相同的web服务器加载的,则可以跳过响应头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56330908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档