📜  如何处理 Express Node.js 项目中的 CORS 错误?

📅  最后修改于: 2022-05-13 01:56:47.522000             🧑  作者: Mango

如何处理 Express Node.js 项目中的 CORS 错误?

如果您想在客户端和服务器位于不同 URL 上时在它们之间发出请求,则应该启用 CORS,也称为跨域资源共享。

让我们认为客户端位于http://localhost:5500上,服务器位于http://localhost:5000上。现在,如果您尝试从客户端向服务器发出请求,您将收到一条错误消息,指出该错误被 CORS 策略阻止。

如何启用 CORS?

我们将使用一个 node.js 包 cors 在 express Node.js 项目中启用 CORS。

项目设置和模块安装:

  • 第 1 步:创建一个 Node.js 应用程序并使用以下命令将其命名为gfg-cors

    mkdir gfg-cors && cd gfg-cors
    npm init 

  • 第 2 步:使用以下命令安装依赖模块。
    npm i express cors
  • 第三步:在根目录下创建client目录和server.js文件。然后在客户端目录下创建index.htmlscript.js

项目目录:它看起来像这样。

示例:index.html、script.js和 server.js文件中写下以下代码。

index.html



    
    
    
    gfg-cors
     

  



script.js
fetch('http://localhost:5000/gfg-articles')
.then((res) => res.json())
.then((gfg_articles) => console.log(gfg_articles));


server.js
// Requiring module
const express = require('express');
const cors = require('cors');
  
// Creating express app object
const app = express();
  
// CORS is enabled for all origins
app.use(cors());
  
// Example api 
app.get('/gfg-articles', 
    (req, res) => res.json('gfg-articles'));
  
// Port Number
const port = 5000;
  
// Server setup
app.listen(port, () => `Server running on port ${port}`);


server.js
// Requiring module
const express = require('express');
const cors = require('cors');
  
// Creating express app object
const app = express();
  
// CORS is enabled for the selected origins
let corsOptions = {
    origin: [ 'http://localhost:5500', 'http://localhost:3000' ]
};
  
// Using cors as a middleware
app.get('/gfg-articles',cors(corsOptions),
    (req,res) => res.json('gfg-articles'))
  
// Port number
const port = 5000;
  
// Server setup
app.listen(port, () => `Server running on port ${port}`);


脚本.js

fetch('http://localhost:5000/gfg-articles')
.then((res) => res.json())
.then((gfg_articles) => console.log(gfg_articles));

服务器.js

// Requiring module
const express = require('express');
const cors = require('cors');
  
// Creating express app object
const app = express();
  
// CORS is enabled for all origins
app.use(cors());
  
// Example api 
app.get('/gfg-articles', 
    (req, res) => res.json('gfg-articles'));
  
// Port Number
const port = 5000;
  
// Server setup
app.listen(port, () => `Server running on port ${port}`);

注意:如果您想允许选定的来源访问您的站点,则需要配置 cors,如下所示。

服务器.js

// Requiring module
const express = require('express');
const cors = require('cors');
  
// Creating express app object
const app = express();
  
// CORS is enabled for the selected origins
let corsOptions = {
    origin: [ 'http://localhost:5500', 'http://localhost:3000' ]
};
  
// Using cors as a middleware
app.get('/gfg-articles',cors(corsOptions),
    (req,res) => res.json('gfg-articles'))
  
// Port number
const port = 5000;
  
// Server setup
app.listen(port, () => `Server running on port ${port}`);

如果您只想允许特定来源访问您的站点,那么corsOptions将如下所示:

let corsOptions = {
    origin: 'http://localhost:5500'
};

运行应用程序的步骤:使用以下命令运行 server.js。

node server.js

输出:打开index.html ,然后在控制台中检查以下输出。