以编程方式允许用户代理(chrome)CORS请求

时间:2017-12-05 08:36:49

标签: javascript api cors

我需要从其他域的外部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让我传递到外部域而没有任何额外的扩展名?

3 个答案:

答案 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

另一种常见的解决方案是创建代理服务器。