我正在尝试从我的Ionic应用程序发送请求到我的NodeJS后端。我像大多数人一样使用Express来提供后端请求。当我尝试使用Angular 2 HTTP接口(@angular/http
)发送请求时,我收到CORS错误。 在Postman中发送请求工作正常(如果重要)
home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, public http: Http) {
}
GetCarInfo() {
this.http.get("http://api.website.dk/licenseplate/?plate=XXXXXX").map(res => res.json()).subscribe(data => {
console.log("woohoo it worked");
});
}
}
nodeJS index.js后端
var express = require('express');
var request = require('request');
var app = express();
var port = 3001;
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
next();
});
app.get('/licenseplate', function(req, res) {
res.send({
name: "Lamborghini",
horsepower: 500
});
});
var server = app.listen(port, function() {
console.log('Express server listening on port ' + port);
});
我尝试过多种方法,例如:
app.use()
cors()
中间件app.get()
错误:
XMLHttpRequest无法加载http://api.website.dk/licenseplate/?plate=XXXXXX。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8100”访问。
它应该添加了标头,以便任何人都可以在我的示例中向NodeJS应用程序发送请求。我做错了什么?