根本原因是浏览器同源策略拦截跨域请求;解决方案包括:一、后端Spring Boot全局CORS配置;二、Vite代理;三、@CrossOrigin注解;四、Nginx反向代理;五、禁用浏览器安全策略(仅调试)。

如果您在本地开发时访问后端接口,浏览器控制台持续报出 CORS 错误,则根本原因是浏览器的同源策略拦截了跨域请求。典型场景为前端运行在 http://localhost:5173,而后端服务部署在 http://localhost:8080,仅端口不同即触发跨域限制。以下是多种可立即实施的解决方案:
一、后端全局配置跨域(Spring Boot)
该方式通过修改后端响应头,使服务器主动声明允许指定来源访问,适用于所有接口,无需前端改动。
1、创建配置类 CorsConfig.java,置于 config 包下。
2、添加 @Configuration 注解标记为 Spring 配置类。
3、实现 WebMvcConfigurer 接口并重写 addCorsMappings 方法。
4、调用 registry.addMapping("/**") 将跨域规则应用于全部接口路径。
5、设置 .allowedOrigins("http://localhost:5173") 明确指定开发前端地址,避免使用 "*" 配合 credentials 时引发冲突。
6、调用 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") 覆盖常见请求类型及预检请求。
7、设置 .allowedHeaders("*") 允许所有请求头字段,包括 Authorization、Content-Type 等。
8、若前端需携带 Cookie 或 Token,必须设 .allowCredentials(true),同时 origins 不得为 "*",须精确匹配。
二、前端开发服务器代理(Vite / Vue3)
该方式在开发阶段将前端请求代理至后端服务,使浏览器认为请求仍为同源,不触发 CORS 检查,仅作用于 vite dev server,不影响生产环境。
1、打开项目根目录下的 vite.config.ts 文件。
2、在 server 对象中添加 proxy 配置项。
3、配置 "/api" 前缀代理到 "http://localhost:8080"。
4、设置 changeOrigin: true,确保后端接收到的 Origin 头被正确改写。
5、保存后重启 Vite 开发服务器。
6、前端代码中统一使用 "/api/xxx" 发起请求,而非完整后端 URL。
7、验证 Network 面板中请求目标地址是否已变为 localhost:8080 对应路径。
三、后端注解方式(单 Controller 或方法级)
该方式粒度最细,适用于仅需对特定接口或模块开放跨域的场景,适合快速验证或临时调试,但不推荐用于多模块大型项目。
1、在目标 Controller 类顶部添加 @CrossOrigin 注解。
2、若需限定来源,传入 origins = "http://localhost:5173" 参数。
3、若需支持凭证,添加 allowCredentials = "true" 属性。
4、若需自定义最大缓存时间,添加 maxAge = 3600。
5、也可直接加在具体 @GetMapping 或 @PostMapping 方法上,实现更精细控制。
6、启动应用后,检查对应接口响应头是否包含 Access-Control-Allow-Origin 字段。
四、Nginx 反向代理(本地模拟生产环境)
该方式通过本地 Nginx 将前端静态资源与后端 API 统一映射至同一域名和端口,彻底消除协议、域名、端口差异,完全绕过浏览器跨域判定。
1、安装并启动本地 Nginx 服务。
2、编辑 nginx.conf,在 http 块内新增 server 块。
3、监听 80 端口,root 指向 Vite 构建后的 dist 目录或本地 serve 的前端资源路径。
4、添加 location /api/ {} 块,内部配置 proxy_pass http://localhost:8080/;注意末尾斜杠保持路径一致性。
5、启用 proxy_set_header Host $host; 与 proxy_set_header X-Real-IP $remote_addr; 透传原始请求信息。
6、执行 nginx -t 验证配置语法,再执行 nginx -s reload 重载配置。
7、浏览器访问 http://localhost,所有 /api/ 请求将由 Nginx 转发至后端,无跨域问题。
五、禁用浏览器安全策略(仅限调试)
该方式通过启动浏览器时关闭同源策略校验,强制跳过 CORS 检查,**仅限本地开发调试使用,严禁用于任何测试或生产环境**。
1、完全退出当前正在运行的所有 Chrome 实例。
2、在终端执行以下命令启动 Chrome(macOS 示例):
3、open -n -a "Google Chrome" --args "--user-data-dir=/tmp/chrome_dev_test" "--disable-web-security"
4、Windows 用户使用命令:chrome.exe --user-data-dir="C:/ChromeDevSession" --disable-web-security
5、Linux 用户使用命令:google-chrome --user-data-dir=/tmp/chrome_dev_test --disable-web-security
6、新打开的浏览器窗口将不执行 CORS 检查,所有跨域请求均可通过。
7、注意:此浏览器实例不可用于登录任何账户或访问敏感网站。











