Angular 5,httpclient,跨源请求被阻止

时间:2018-01-24 16:01:49

标签: angular cors httpclient

我知道有很多类似的问题,但我找不到任何可以解决我问题的问题。

我希望使用他们的API访问我的Binance帐户。

https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

以下是使用docs中的示例编写的简单函数:

postBinance() {
    const path = 'https://api.binance.com/api/v3/order'
        + '?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559'
        + '&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71';

    const headers = new HttpHeaders()
        .append('X-MBX-APIKEY', 'vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A')
        .append('Access-Control-Allow-Origin', '*')
        .append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
        .append('Access-Control-Allow-Headers', 'Content-Type');

    const options = {
        headers: headers
    };

    return this.http.post(path, null, options);
}

使用该函数会导致firefox和chrome出错。 这是来自firefox的错误:

  

阻止跨源请求:同源策略禁止在https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

这里来自chrome:

  

无法加载https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71:预检的响应包含无效的HTTP状态代码404

我已经安装了chrome" Allow-Control-Allow-Origin:*"的扩展名,但在这种情况下它不起作用。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

确保您添加了扩展CORS并启用它。供参考:https://www.html5rocks.com/en/tutorials/cors/

  1. 在项目的根目录中创建名为proxy.conf.json的文件
  2. 在文件中粘贴以下内容: {      " / api":{      " target":“您的API网址”,      "安全":错误      } }
  3. 将cmd运行为: - ng serve --proxy-config proxy.conf.json