后端岗位面试题更新 2026-08-05

请解释跨域问题的成因,并结合你的云图库项目,说明在后端采用了哪些具体方案来处理跨域请求?

后端开发风险判断技术原理问题排查NginxSpring Boot

考察说明

考查对跨域机制的理解以及在后端实际应用中的解决方案。

回答思路

  1. 【回答框架 1】跨域问题源于浏览器的同源策略,它限制不同源(协议、域名、端口任一不同)的文档或脚本进行交互,目的是防止恶意网站窃取数据。当云图库前端(如 http://localhost:8080)请求后端(如 http://api.example.com)时,浏览器会拦截响应,除非后端明确允许。
  2. 【回答框架 2】后端解决跨域的常用方案是配置 CORS(跨域资源共享)。在 Spring Boot 中,可以通过实现 WebMvcConfigurer 并重写 addCorsMappings 方法,设置允许的源、方法、请求头等,例如允许特定域名或使用 allowedOriginPatterns 支持通配符。
  3. 【回答框架 3】另一种方案是使用反向代理,如 Nginx,将前端请求代理到后端,使浏览器认为请求同源,从而规避跨域。这种方式对后端代码无侵入,适合生产环境。
  4. 【回答框架 4】对于复杂请求(如带自定义头或非简单方法),浏览器会先发送预检请求(OPTIONS),后端需正确响应预检,否则请求失败。在云图库项目中,我配置了 CORS 过滤器或拦截器来处理预检请求,并确保携带凭证(如 Cookie)时不能使用通配符源。
  5. 【回答框架 5】如果项目使用 Spring Security,还需在安全配置中允许 CORS,否则安全过滤器会拦截跨域请求。我通过 http.cors() 启用 CORS 配置,并确保与全局 CORS 配置一致。
  6. 【关键点 1】跨域由浏览器同源策略引起,限制不同源间的资源交互。
  7. 【关键点 2】后端常用 CORS 配置,通过设置允许的源、方法和头来放行跨域请求。
  8. 【关键点 3】预检请求(OPTIONS)需正确处理,否则复杂请求失败。
  9. 【关键点 4】反向代理(如 Nginx)可规避跨域,适合生产环境。
  10. 【关键点 5】携带凭证时,CORS 不能使用通配符源,需明确指定。