我需要从其他域的外部API获取一些数据。 我使用测试应用程序,在localhost上运行,我收到错误:
Access-Control-Allow-Origin不允许原点http://localhost。
我尝试通过获取方法
访问:https://api.coinmarketcap.com/v1/ticker/我做了很多搜索,并且:
但不幸的是,我的页面加载只是简单的AJAX请求,我无法访问该API并收到错误。
我的预测是用户代理(chrome)以某种方式阻止了我的请求。 我不能使用chrome扩展程序,因为我还希望从我的手机访问我的网站,但无法获得该桌面扩展程序。
现在我的解决方案是“proxy”,node.js服务器可以访问该API,流程如下:
FE
- ASK BE - >
BE
- ASK API - >
- 响应 - >
BE
- 对FE的反应 - >
FE显示一切
FE - Frontend,BE - Backend(node.js proxy),API - 外部API
但我想避免BE上不必要的代码。也许有一些解决方案? 就像一些神奇的标题会告诉chrome让我传递到外部域而没有任何额外的扩展名?
答案 0 :(得分:0)
你是对的,你不能绕过CORS规则,除非你使用jsonp并且有问题的服务器支持它。在过去使用该代码时,我必须完全按照您所描述的快速构建后端。
FE => BE => Ticker => BE => FE
答案 1 :(得分:0)
嗯,你可以按照这里所描述的那样干净 - https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
设置标题值
Access-Control-Allow-Origin:*
您对服务器首页加载的响应。
答案 2 :(得分:0)
如果您的所有网页都使用HTML5,则可以尝试使用Window.postMessage。
另一种常见的解决方案是创建代理服务器。