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

我正在尝试运行一个简单的应用程序。我有一个Express后端,在访问时会返回JSON字符串localhost:4201/ticker。当我运行服务器并通过AngularService向该链接发出请求时http,出现以下错误:

XMLHttpRequest无法加载localhost:4201/ticker。跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https

,该cors模块与我的Express服务器一起使用。但是,我仍然收到如上所述的错误。部分代码如下:

服务器代码:

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);

});

}

这是我的Angular服务:

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;

}

回答:

XMLHttpRequest无法加载localhost:4201/ticker。跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https。

每当您看到“仅支持协议方案”消息时,几乎可以肯定地说这意味着您只是忘记了将httpshttp放在代码中的请求URL上。

因此,在这种情况下,解决方法是http://localhost:4201/ticker在代码中使用以下网址:

this._baseUrl = 'http://localhost:4201/';

…因为没有http://那里,localhost:4201/ticker所以您输入的网址确实不是。

以上是 CORS错误:“仅协议方案支持请求:http…”等 的全部内容, 来源链接: utcz.com/qa/430305.html

回到顶部