我能够通过一些本地临时修复来传递这个错误。但是现在,我正在将应用程序移至网络。试图找出这个 CORS 错误两天。在我的 VDS 上,我有 xxxx:4200 和 xxxx:3000 作为 angular 和 nodejs/express 设置。两者都可以在互联网上访问。
我尝试过的:
app.use(cors());
也许我的尝试是错误的,因此您可以提出相同的建议并进行一些澄清。
在客户端获取请求:
apiUrl = 'http://46.245.165.120:3000/';
this.http.get(this.apiUrl + `users/${type}`, { headers: { 'Authorization': `Bearer ${this.getToken()}` ,
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods': 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token'
}});
服务器端标头和 CORS 设置:
var originsWhitelist = [
'http://localhost:4200', //this is my front-end url for development
'http://x.x.x.x:4200',
'http://www.myproductionurl.com'
];
var corsOptions = {
origin: function (origin, callback) {
var isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
callback(null, isWhitelisted);
},
credentials: true
};
app.use(cors(corsOptions));
const allowCrossDomain = function (req, res, next) {
var origin = req.headers.origin;
if (originsWhitelist.indexOf(origin) > -1) {
res.header('Access-Control-Allow-Origin', origin);
}
res.header('Access-Control-Allow-Methods', 'OPTIONS, GET, POST'); // added OPTIONS as an allowed method
res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type,x-access-token');
res.header('access-control-allow-credentials', true);
return next();
}
app.use(allowCrossDomain)
我从这里向我的 rest api 发出请求,请求能够返回 200 个响应,所以我意识到问题出在我的 angular 应用程序上。我所有的问题都是 apiUrl 是本地主机。我正在请求localhost:3000
不x.x.x.x:3000
。有点疏忽,但浪费了大量时间,所以我想回答自己的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句