请原谅我犯下的明显的错误...
我理解CORS,了解它是如何使用的,为什么使用它。但在这种情况下,我忽略了明显得令人眼花缭乱的东西。
我正在尝试访问一个公开可用的API,它应该工作得很好(我得到了保证)
如果我在Chrome或Postman中找到了端点,一切都会正常工作:返回一个非常棒的JSON。
当我试图从我的create-react-app的componentDidMount
中使用axios
执行相同的操作时,我得到了一个CORS错误,特别是
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.
我到底有什么不能掌握的?从我这方面有什么我能做的吗?(我无法控制服务器)
发布于 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服务器加载的,则可以跳过响应头。
https://stackoverflow.com/questions/56330908
复制相似问题