当前位置: 首页 > 知识库问答 >
问题:

CORS错误:“请求只支持协议方案:HTTP……”等

衡翰藻
2023-03-14
private constructor(baseUrl: string, port: number) {
    this._baseUrl = baseUrl;
    this._port = port;
    this._express = Express();
    this._express.use(Cors());
    this._handlers = {};
    this._hInstance = new Handlers();
    this.initHandlers();
    this.initExpress();
}
private initHandlers(): void {
    // define all the routes here and map to handlers
    this._handlers['ticker'] = this._hInstance.ticker;
}
private initExpress(): void {
    Object.keys(this._handlers)
        .forEach((key) => {
            this._express.route(this._url(key))
                .get(this._handlers[key]);
        });
}
private _url(k: string): string {
    return '/' + k;
}
ticker(req: Request, res: Response): void {
    Handlers._poloniex
        .getTicker()
        .then((d) => {
            return Filters.tickerFilter(d, Handlers._poloniex.getBases());
        })
        .then((fdata) => {

            //res.header('Access-Control-Allow-Origin', "*");
            //res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
            res.header('Content-Type', 'application/json');
            res.send(JSON.stringify(fdata));
        })
        .catch((err) => {
           this._logger.log([
                'Error: ' + err.toString(),
                'File: ' + 'handlers.class.ts',
                'Method: ' + 'ticker'
            ], true);
        });   
}
export class LiveTickerService {

  private _baseUrl: string;
  private _endpoints: {[key:string]: string};

  constructor(
    private _http: Http
  ) {
    this._baseUrl = 'localhost:4201/';
     this._endpoints = {
       'ticker': 'ticker'
     };
   }

  getTickerData(): Observable<Response> {
    return this._http.get(this._baseUrl + this._endpoints['ticker'])
      .map(resp => resp.json())
  }

}
getTicker() {
  let a = new Array<{[key: string]: any}>();
  this._tickerService.getTickerData()
     .subscribe(
        data => {
          let parsed = JSON.parse(JSON.stringify(data));
          Object.keys(parsed)
            .forEach((k) => {
              a.push({k: parsed[k]});
            });
         this.data = a;
        },
        error => console.log(error.toString()),
        () => console.log('Finished fetching ticker data')
      );
  return this.data;
}

共有1个答案

贺高飞
2023-03-14

XMLHttpRequest无法加载localhost:4201/ticker。跨源请求只支持协议方案:http、data、chrome、chrome-extension、HTTPS。

每当您看到“仅支持协议方案”消息时,几乎肯定意味着您忘记在代码中的请求URL上添加httpshttp

因此,在这种情况下,修复方法是在代码中使用URLhttp://localhost:4201/ticker:

this._baseUrl = 'http://localhost:4201/';
 类似资料:
  • 问题内容: 我正在尝试运行一个简单的应用程序。我有一个Express后端,在访问时会返回JSON字符串。当我运行服务器并通过AngularService向该链接发出请求时,出现以下错误: XMLHttpRequest无法加载localhost:4201/ticker。跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https。 ,该模块与我的Express服务器一起使

  • 我有一个非常简单的angular js应用程序的三个文件 index.html 产品-color.html 应用程序JS 当我使用名为ProductColor的自定义指令输入product-color.html的include时,就开始出现此错误: 可能出了什么问题?这是product-color.html的路径问题吗? 我的三个文件都在同一个根文件夹中

  • 问题内容: 我有一个非常简单的angular js应用程序的三个文件 index.html product-color.html app.js 使用名为productColor的自定义指令输入product-color.html的包含内容后,我就开始出现此错误: 可能出什么问题了?这是product-color.html的路径问题吗? 我所有的三个文件都在同一个根文件夹中 问题答案: 发生此错误是

  • 我试图完成角快速入门教程,但我得到了CORS错误。 我在windows主机文件中的system32/drivers/etc/下配置了此主机: 我在apache中配置了这个虚拟主机 null 这是我的package.json: 这是我的index.html: 这是我的grunt ts编译器文件:

  • 问题内容: 我有一个非常简单的angular js应用程序的三个文件 index.html product-color.html app.js 使用名为productColor的自定义指令输入product-color.html的包含内容后,我就开始出现此错误: 可能出什么问题了?这是product-color.html的路径问题吗? 我所有的三个文件都在同一个根文件夹中 问题答案: 发生此错误是