发布于2026-07-06 阅读(0)
扫一扫,手机访问
跨域问题是Node.js后端开发中绕不开的一道坎。简单来说,CORS(跨来源资源共享)就是一套让服务器告诉浏览器“这个请求我认了”的安全机制——浏览器拿着来自不同源的请求来敲门,服务器得明确表态“放行”还是“拦下”。具体实现方式其实就那么几种,下面挑最常用的展开聊聊。

cors 中间件如果你在用Express框架,装一个 cors 包就能把大部分脏活干完。一行代码部署,几行配置精细化控制。
装包很简单:
npm install cors
然后在应用里挂载中间件:
const express = require('express');
const cors = require('cors');
const app = express();
// 允许所有来源(极简模式)
app.use(cors());
// 或者追求更精细的控制:分开设置来源、方法和请求头
app.use(cors({
origin: 'http://example.com',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这个方法最直观,适合绝大多数场景。把配置写在 app.use(cors({...})) 里,后续调整也方便。
如果你不想引入额外依赖,或者想彻底搞明白CORS底层怎么运作,手动往响应头里写几个字段就够了。
做法是在Express的请求处理链路上加一个全局中间件:
const express = require('express');
const app = express();
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
原理和 cors 中间件一样,只是由你亲手把响应头塞进去。注意这种方式需要自己处理OPTIONS预检请求(后面会讲)。
http 模块——完全手撸如果你没在用Express,直接拿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');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
if (req.url === '/' && req.method === 'GET') {
res.end('Hello World!');
}
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
这套代码虽然简陋,但麻雀虽小五脏俱全。对于小工具或临时测试足够用了。
最后补充两个实际项目中最容易踩的坑:
* 开全局。虽然开发时方便,但线上最好把 Access-Control-Allow-Origin 设成具体的域名,否则后续取证、安全审核都会很被动。PUT 带 Authorization 头),浏览器会先发一个 OPTIONS 请求来“试探”服务器。你的后端必须能正确响应这个请求——通常在中间件或路由里加一个专门处理 OPTIONS 的判断,把对应的CORS头返回就可以。忽略这一点,跨域问题会变成“偶尔失败”的玄学现象。掌握了这三种方法,大部分Node.js跨域场景都能游刃有余地处理。选一种最贴合当前项目架构的方式,开干吧。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8