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

请阐述在 Node.js 环境下启用 CORS 跨域资源共享的具体实现方式,包括依赖模块、配置要点与常见处理策略。

前端/移动开发风险判断技术原理Node.js

考察说明

考查候选人是否理解 CORS 原理及在 Node.js 服务端的落地配置。

回答思路

  1. 【回答框架 1】CORS 是基于 HTTP 头的跨域机制,浏览器发起跨域请求时,服务端需返回 Access-Control-Allow-Origin 等响应头,客户端校验通过后才会放行。
  2. 【回答框架 2】常用实现是使用 cors 中间件,在 Express 中通过 app.use(cors()) 全局启用,也可按路由配置,cors 中间件支持 origin、methods、allowedHeaders、credentials 等选项。
  3. 【回答框架 3】若手动实现,需根据请求头 Origin 动态设置 Access-Control-Allow-Origin,处理预检请求(OPTIONS),并返回 204 状态码,同时正确设置 Vary: Origin 以适配多源场景。
  4. 【回答框架 4】需区分简单请求与预检请求:简单请求直接携带 CORS 头响应;非简单请求(如自定义头、PUT/DELETE)需先响应 OPTIONS 预检,再实际请求。
  5. 【回答框架 5】credentials 跨域需明确设置 Access-Control-Allow-Credentials 为 true,且 Access-Control-Allow-Origin 不能为 *,必须指定精确源,并需配置对应的 allowedHeaders 和 methods。
  6. 【关键点 1】CORS 依赖浏览器与服务端共同配合,服务端通过响应头控制跨域权限。
  7. 【关键点 2】使用 npm 包 cors 配合 Express 是最快捷的集成方式,支持全局与按路由配置。
  8. 【关键点 3】处理预检请求时需返回 204 并设置必要的允许方法、请求头。
  9. 【关键点 4】携带凭证时不能使用通配符 *,必须指定具体源。
  10. 【易错点 1】仅设置 Access-Control-Allow-Origin 而忽略 OPTIONS 预检,会导致非简单请求失败。
  11. 【易错点 2】允许所有来源且携带凭证会造成安全风险,生产环境不应使用 *。
  12. 【易错点 3】自定义请求头或方法未在允许列表中,浏览器会拦截响应,需完整配置 allowedHeaders 和 methods。