You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot POST请求遭CORS策略拦截,寻求解决方案

解决Spring Boot + Vue跨域CORS问题的方案

先排查两个直接的错误点

1. 请求路径不匹配

你的OrderController中POST接口的映射是@PostMapping("/saveOrder")(驼峰大写O),但Vue代码里请求的URL是http://localhost:8080/api/saveorder/(全小写+末尾多了斜杠)。路径不匹配会导致请求无法命中带@CrossOrigin注解的接口方法,自然不会返回CORS响应头,引发报错。

修正:
把Vue中的POST请求URL改成:

const response = await axios.post('http://localhost:8080/api/saveOrder', requestData)

(去掉末尾斜杠,保持和Controller一致的驼峰写法)

2. @CrossOrigin注解的Origin格式错误

你在Controller上写的@CrossOrigin("http://localhost:5173/")带了末尾斜杠,但实际请求的Origin是http://localhost:5173(没有斜杠),这会导致Origin匹配失败,CORS头不生效。

修正:
把注解改成:

@CrossOrigin("http://localhost:5173")

如果上述修正后仍有问题,使用全局CORS配置

有时候局部@CrossOrigin注解在处理预检OPTIONS请求时可能存在兼容性问题,建议添加全局CORS配置类,覆盖所有/api路径的请求:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/api/**") // 匹配所有/api下的路径
                        .allowedOrigins("http://localhost:5173") // 允许的前端域名
                        .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法
                        .allowedHeaders("*") // 允许所有请求头
                        .allowCredentials(true); // 允许携带Cookie(如果需要的话)
            }
        };
    }
}

添加这个配置类后,可以暂时去掉Controller上的@CrossOrigin注解,避免冲突。

额外注意点

  • 确认你的Order实体类中存在firstName、lastName、itemId这些属性,并且有对应的getter/setter,否则@RequestBody无法正确解析请求参数,也可能间接导致CORS相关的报错。
  • Postman测试不触发CORS检查是因为它不是浏览器环境,只有浏览器会严格执行同源策略。

内容的提问来源于stack exchange,提问作者Kova981

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:55:13