Binance API和angular 4 httpClient

Ada*_*ski 5 javascript http cors typescript angular

我有一个关于cryptomarket Binance的问题.他们有公共api我虽然我可以使用角度来创建交易应用程序.

但我有一些麻烦.在chrome中使用该链接我得到json结果. https://api.binance.com/api/v1/exchangeInfo

但使用angular 4 httpClient:

this.http.get('https://api.binance.com/api/v1/exchangeInfo').subscribe(res => console.log(res));
Run Code Online (Sandbox Code Playgroud)

我有错误:跨源请求被阻止:同源策略不允许在api.binance.com/api/v1/exchangeInfo上读取远程资源.(原因:缺少CORS标题'Access-Control-Allow-Origin')

它不起作用.我不明白,为什么我不能在角应用程序中使用该API?https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

我该怎么办?我应该像这样设置标题:

getMarkets() {
    const headers = new HttpHeaders();
    headers.set('Content-Type', 'application/json');
    headers.set('Accept', 'application/json');
    headers.set('Access-Control-Allow-Headers', 'Content-Type');
    headers.set('Access-Control-Allow-Origin', '*');

    const path = 'https://api.binance.com/api/v1/exchangeInfo';
    return this.http.get(path, {headers: headers});
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

jay*_*jay 6

你不能像那样直接使用它,Binance API 没有设置 CORS 标头,因此 Chrome 和所有主要浏览器都会阻止请求。还有一点,但本质上,需要启用对 CORS 支持的 api 服务器应该设置Access-Control-Allow-Origin*或 单个域www.example.com,这允许浏览器防止站点上的恶意代码调用和读取某些数据的响应从您可能登录的其他站点(例如:银行信息)您可以在此处阅读有关它的更多信息

一种可能的解决方案是拥有自己的服务器来代理对币安的调用

如果您正在测试,另一种解决方案是使用像这样的 CORS 启用扩展

更新:如果满足您的数据需求文档,您还可以使用 websocket API

更新 2:这是关于 cors的一个很好的 stackoverflow问题

旁注:如果您银行的 API 服务器设置为Access-Control-Allow-Origin*则更改银行 :)


Léo*_* R. 1

尝试这个不带标头的简单请求。

 this.http.get('https://api.binance.com/api/v1/exchangeInfo').subscribe(data => {
      this.results = data;
    });
  }
Run Code Online (Sandbox Code Playgroud)

它对我有用