前端/移动开发面试题更新 2026-08-05

在 Koa 应用中,有哪些常见的方式来处理 CORS 跨域请求?请描述具体实现方法。

前端/移动开发编码实现技术原理KoaNode.js

考察说明

考查对 Koa 中间件机制及 CORS 处理方法的理解。

回答思路

  1. 【回答框架 1】CORS 跨域请求是浏览器基于同源策略的限制,需要服务端在响应头中声明允许的跨域来源。Koa 作为 Node.js 的 Web 框架,处理方式主要依赖中间件。
  2. 【回答框架 2】最常用的方式是使用 koa2-cors 或 @koa/cors 中间件。通过 app.use(cors()) 引入,该中间件会根据配置自动设置 Access-Control-Allow-Origin、Access-Control-Allow-Methods 等响应头,并处理预检请求。
  3. 【回答框架 3】如果没有使用现成中间件,也可以手动编写 Koa 中间件。在 await next() 之前或之后,根据请求的 Origin 和请求方法,设置对应的 CORS 响应头。对于复杂请求的 OPTIONS 预检,直接返回 204 并结束请求。
  4. 【回答框架 4】对于特定路由或子路径,可以使用 @koa/cors 的 origin 选项,通过回调函数动态决定允许的来源,例如根据请求 Origin 在白名单中匹配。
  5. 【关键点 1】同源策略限制跨域,CORS 通过 HTTP 头实现跨域资源共享。
  6. 【关键点 2】Koa 中常用 koa2-cors 或 @koa/cors 中间件处理 CORS。
  7. 【关键点 3】预检请求(OPTIONS)需要快速响应,避免进入业务逻辑。
  8. 【关键点 4】可以手动编写中间件,但需注意响应头的正确设置。
  9. 【易错点 1】只设置 Access-Control-Allow-Origin 而不处理 OPTIONS 预检请求,会导致复杂请求失败。
  10. 【易错点 2】在设置 Access-Control-Allow-Origin 时,使用 * 会导致携带凭证的请求失败。
  11. 【易错点 3】手动设置响应头时,若在业务逻辑之后设置,可能因响应已发送而无效。