koa-cors 跨域设置中间件
什么是CORS
跨域资源共享(Cross-Origin Resource Sharing)是一种机制,用来允许不同源服务器上的指定资源可以被特定的Web应用访问。
同源策略
同源是指不同的站点间,域名、端口、协议都相同,浏览器的同源策略(same-origin policy)出于安全原因,会限制浏览器的跨源 HTTP 请求。
哪些情况遵循同源策略
- 由 XMLHttpRequest 或 Fetch 发起的跨域 HTTP 请求。
- Web 字体 (CSS 中通过 @font-face 使用跨域字体资源)。
- WebGL 贴图
- 使用 drawImage 将 Images/video 画面绘制到 canvas
为什么需要CORS
Web应用向服务器请求资源时,由于同源策略限制,Web应用程序只能从同一个域请求 HTTP 资源。如果服务器和Web应用不在同一个域,会发起一个跨域 HTTP 请求。
CORS响应头部
当响应报文包含了正确CORS响应头, Web应用程序才能从跨域的服务器加载资源。
- Access-Control-Allow-Origin - 指定了允许访问该资源的外域 URI
- Access-Control-Expose-Headers - 服务器设置允许浏览器访问特定的头
- Access-Control-Max-Age - 指定预请求的结果能够被缓存多久
- Access-Control-Allow-Credentials - 当浏览器的 credentials 设置为true时是否允许浏览器读取 response 的内容
- Access-Control-Allow-Methods - 预检请求的响应,指明实际请求所允许使用的 HTTP 方法
- Access-Control-Allow-Headers - 预检请求的响应,指明实际请求中允许携带的首部字段
Koa-cors
Koa-cors 是基于 node-cors 开发的 Koa CORS中间件。
安装
$ npm install koa-cors --save
使用
var koa = require('koa');
var route = require('koa-route');
var cors = require('koa-cors');
var app = koa();
app.use(cors());
app.use(route.get('/', function() {
this.body = { msg: 'Hello World!' };
}));
app.listen(3000);
配置
具体的配置参考 koa-cors 文档,这里做简单介绍
origin
:配置 Access-Control-Allow-Origin 头部expose
:配置 Access-Control-Expose-Headers 头部maxAge
:配置 Access-Control-Max-Age 头部credentials
:配置 Access-Control-Allow-Credentials 头部methods
:配置 Access-Control-Allow-Methods 头部headers
:配置 Access-Control-Allow-Headers 头部
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具