Javascript 与节点js一起使用angular时出现Cors错误
我正在处理一个meanstack项目,在与NodeJSAPI调用通信时,我遇到了一个错误 具体如下Javascript 与节点js一起使用angular时出现Cors错误,javascript,angular,cors,mean-stack,Javascript,Angular,Cors,Mean Stack,我正在处理一个meanstack项目,在与NodeJSAPI调用通信时,我遇到了一个错误 具体如下 Access to XMLHttpRequest at 'http://localhost:5050/user/login' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No
Access to XMLHttpRequest at 'http://localhost:5050/user/login' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
但我已经启用了CORS
// require .env
require('dotenv').config();
// requring modules
const express=require('express');
const cors=require('cors');
const mongoose=require('mongoose');
const port=5050
// initialize express application
const app=new express();
// configure application
app.use(express.json())
app.use(cors());
这里可能有什么问题?请提前感谢。还需要将代理添加到角度代码。您可以找到详细的步骤
express是一个
工厂
函数,而不是构造函数
函数。它应该像普通函数一样调用,而不是与new
一起使用
你可以看到它的代码
所以你必须写作
const-app=express()代码>
而不是const app=new express()代码>要通过代理配置启用CORS,我们需要在Angular根文件夹中生成一个src/proxy.conf.json文件,并在其中放置以下代码
{
"/api/*": {
"target": "http://localhost:3000",
"secure": false,
"logLevel": "debug"
}
}
在angular.json中定义代理配置值
要注册代理配置,我们需要转到angular.json文件,并将以下代码放在serve/options中。它将在Angular应用程序中设置src/proxy.conf.json文件
"architect": {
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "project-name:build",
"proxyConfig": "src/proxy.conf.json"
},
}
}
现在,您已经设置好使用当前代理配置启动dev服务器,请运行下面给定的命令。如果对代理配置文件进行任何更新,请重新启动服务器
ng serve --open
在节点/Express服务器中启用CORS
现在,我们将学习如何在Express和Node js应用程序中启用CORS。我们将研究使用第三方软件包在express中配置CORS的最简单方法之一
可以运行以下命令在node/express后端中添加cors包
npm install cors --save
接下来,您可以添加以下代码以在Express server中启用cors
// server.js
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
/* server configuration here */
最后,在节点服务器中启用CORS
当向应用程序发出任何请求时,将呈现Access Control Allow Origin:*标题。此标头选择授权哪个来源使用CORS访问服务器资源
此处*通配符分配来自任何源的访问权。const-app=express()代码>而不是const app=new express()代码>谢谢这解决了我的问题,但是你能解释一下这里的问题是什么吗?虽然这个链接可以回答这个问题,但最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
// server.js
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
/* server configuration here */