Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何解决飞行前请求响应未通过访问控制检查错误的问题?_Node.js_Angular_Cors - Fatal编程技术网

Node.js 如何解决飞行前请求响应未通过访问控制检查错误的问题?

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

我在一个虚拟机中有一个角度代码,在另一个虚拟机中有一个节点代码。我需要从这个角度的VM到节点VM进行API调用。我还包括了cors模块。但在进行API调用时,仍然会出现如下错误

“从源“http:IP2”访问位于“http:IP1”的xmlhttprequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:无“访问控制”

我也设置了这样的标题

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应用程序位于同一个虚拟机上,那么它应该可以工作。你能把你的节点和角度应用程序放在同一台虚拟机上吗?是的,它在工作,但现在他们要求我这样运行。有可能吗?