我正在尝试运行一个简单的应用程序。我有一个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。
每当您看到“仅支持协议方案”消息时,几乎可以肯定地说这意味着您只是忘记了将https
或http
放在代码中的请求URL上。
因此,在这种情况下,解决方法是http://localhost:4201/ticker
在代码中使用以下网址:
this._baseUrl = 'http://localhost:4201/';
…因为没有http://
那里,localhost:4201/ticker
所以您输入的网址确实不是。
我有一个非常简单的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的路径问题吗? 我所有的三个文件都在同一个根文件夹中 问题答案: 发生此错误是
我在chrome控制台中出现了一个below错误 XMLHttpRequest无法加载XMLHttpRequest无法加载turn:global.turn.twilio.com:3478/turn?username=username&key=key&transport=UDP交叉起源请求仅支持协议方案:http、data、chrome、chrome-extension、HTTPS。 在运行本地we
问题内容: 我有一个非常简单的angular js应用程序的三个文件 index.html product-color.html app.js 使用名为productColor的自定义指令输入product-color.html的包含内容后,我就开始出现此错误: 可能出什么问题了?这是product-color.html的路径问题吗? 我所有的三个文件都在同一个根文件夹中 问题答案: 发生此错误是