Node.js 如何解决飞行前请求响应未通过访问控制检查错误的问题?
我在一个虚拟机中有一个角度代码,在另一个虚拟机中有一个节点代码。我需要从这个角度的VM到节点VM进行API调用。我还包括了cors模块。但在进行API调用时,仍然会出现如下错误 “从源“http:IP2”访问位于“http:IP1”的xmlhttprequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:无“访问控制” 我也设置了这样的标题Node.js 如何解决飞行前请求响应未通过访问控制检查错误的问题?,node.js,angular,cors,Node.js,Angular,Cors,我在一个虚拟机中有一个角度代码,在另一个虚拟机中有一个节点代码。我需要从这个角度的VM到节点VM进行API调用。我还包括了cors模块。但在进行API调用时,仍然会出现如下错误 “从源“http:IP2”访问位于“http:IP1”的xmlhttprequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:无“访问控制” 我也设置了这样的标题 app.use(function(req,res,next) { res.setHeader('Access-Control-All
app.use(function(req,res,next) {
res.setHeader('Access-Control-Allow-Origin','*');
res.setHeader('Access-Control-Allow-Methods','POST');
res.setHeader('Access-Control-Allow-Headers','X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials',true);
next();
});
app.use(cors());
但我仍然面临一个错误。有人能告诉我如何解决此错误吗?尝试显式设置本地主机并添加所需的方法类型:
// Add headers
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200');
// desired types of methods
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
更新:
例如,您的节点服务器位于http://127.0.0.1:8000
。那么您的角度应用程序应该是http://127.0.0.1:4200
更新1:
npm install --save cors
然后:
var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
我给我的ip地址是这样的“我应该只给节点ip knw的角度?”?是的,我已经给出并测试过了。但是我仍然面临这个问题。。你能帮个忙吗?再次感谢你的努力,但是我已经给了你提到的角节点的ip,我仍然被同样的问题困扰着。我们应该只在同一个VM中托管angular&node应用程序?我们无法在不同的虚拟机中托管并使其正常工作?@sasi问题似乎在于您有两个不同的虚拟机。如果nodejs和Angular应用程序位于同一个虚拟机上,那么它应该可以工作。你能把你的节点和角度应用程序放在同一台虚拟机上吗?是的,它在工作,但现在他们要求我这样运行。有可能吗?