Javascript 如何处理CORS政策问题?

Javascript 如何处理CORS政策问题?,javascript,html,angular,http,Javascript,Html,Angular,Http,该项目只是一个前端项目,没有使用服务器端语言,我想从区块链图表中获取实时数据,我已经看到了类似问题和答案的答案,但在其他框架上。尚未为角点指定任何对象。我在src文件夹中创建了一个proxy.conf.json文件,并添加了以下代码,但在检查浏览器时仍然收到相同的错误 { "/api/*": { "target": "http://localhost:3000", "secure": false, "logLevel": "debug"

该项目只是一个前端项目,没有使用服务器端语言,我想从区块链图表中获取实时数据,我已经看到了类似问题和答案的答案,但在其他框架上。尚未为角点指定任何对象。我在src文件夹中创建了一个proxy.conf.json文件,并添加了以下代码,但在检查浏览器时仍然收到相同的错误


{
    "/api/*": {
        "target": "http://localhost:3000",
        "secure": false,
        "logLevel": "debug"
    }
}  

我已将proxy.conf.jason文件添加到angular.json下的serve部分,但仍不断出现错误:

CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头

这是我的ApiService课程:


import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class ApiService {

  constructor(private httpclient : HttpClient ) { }

    public dailychart(){
       return this.httpclient.get('https://api.blockchain.info/charts/transactions-per-second?timespan=5weeks&rollingAverage=8hours&format=json');
     }

}


Api.区块链的文档说

查询API纯文本查询API从blockchain.info检索数据 如果在GET请求中添加&CORS=true参数,则某些API调用可与CORS头一起使用

您可以在这里看到其余的文档


这不是配置代理的方式。请看一看,因为它看起来像是您在没有实际配置它的情况下就删除了示例代理。还请注意,您仍然需要处理生产的CORS问题,因为这仅在运行Angular development server时有效

但是,在开发时,您需要更改代理文件,以便定义一个虚拟端点,该端点将假装为实际资源的端点,然后在代码中使用该虚拟端点

因此,您可以将
proxy.conf.json
更改为

{
    "/blockchain-info": {
        "target": "https://api.blockchain.info",
        "secure": false,
        "logLevel": "debug"
    }
}  
ApiService
到:

import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';

@Injectable({providedIn: 'root'})
export class ApiService {
  constructor(private httpclient: HttpClient) {}

  public dailychart() {
    return this.httpclient.get('/blockchain-info/charts/transactions-per-second?timespan=5weeks&rollingAverage=8hours&format=json');
  }
}

您可以看到,我们不尝试直接呼叫
https://api.blockchain.info
。相反,我们将它们添加到我们注册为
/blockchain info
的代理中。现在,当Angular看到您向
/blockchain info
发出请求时,它将向您的正确URL发出非CORS触发请求(在浏览器之外)。

您是如何运行应用程序的?这是构建和部署的版本吗?代理仅在开发模式下工作。@zero298我处于开发模式