发布于2026-07-07 阅读(0)
扫一扫,手机访问
在 CentOS 环境下部署 Node.js 应用时,跨域访问几乎是绕不开的问题。前后端分离架构下,浏览器出于安全策略会拦截跨域请求,而解决方案的核心就是 CORS(跨来源资源共享)。那么,具体怎么在 Node.js 里把它配好?下面直接上干货。

如果你用的是 Express 框架,那最简单的方式就是引入 cors 中间件。安装过程就不赘述了,直接执行:
npm install cors express
然后在应用里这样配——既可以把所有来源都放行,也可以精确限定某个域名:
const express = require('express');
const cors = require('cors');
const app = express();
// 允许所有来源的跨域访问
app.use(cors());
// 或者,你可以指定允许的来源
app.use(cors({ origin: 'http://example.com' }));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这里需要注意:生产环境千万别图省事直接写 *,除非你真的打算向全世界开放接口。限定具体的域名才是更稳妥的做法。
如果项目中没用 Express,或者你更想把控制权握在自己手里,那就手动在 HTTP 响应里添加 CORS 头部。来看一个原生 Node.js HTTP 服务的示例:
const http = require('http');
const server = http.createServer((req, res) => {
// 设置跨域访问相关的响应头
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// 处理预检请求
if (req.method === 'OPTIONS') {
res.writeHead(200);
res.end();
return;
}
res.write('Hello World!');
res.end();
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
逻辑很清晰:收到请求后先设置三个关键头部——允许的来源、允许的 HTTP 方法、允许的自定义请求头。注意 OPTIONS 预检请求得单独处理,直接返回 200 即可。同样,出于安全考虑,生产环境应该把 Access-Control-Allow-Origin 从 * 改成具体的域名。
两种方法都试下来,你会发现跨域配置本质上就是几个 HTTP 头部的博弈。选哪种取决于你的项目架构:用 Express 就上中间件,干净利落;原生写法则更适合定制化场景。关键的底线是——别为了省事牺牲安全性,毕竟接口暴露出去,谨慎点总没错。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8