Kotlin+SpringBoot配置@CrossOrigin仍出现CORS跨域请求错误如何解决?
问题根因
你遇到的CORS报错核心由3个问题共同导致:
- 接口路径不匹配
你的RequestTest类标注了@RequestMapping("/test"),类下所有接口路径都会自动拼接/test前缀,你写的@RequestMapping("/comment")接口实际的访问路径是http://localhost:8080/test/comment,前端直接请求/comment会得到404响应,而Spring的404响应默认不会携带CORS头,所以触发CORS报错。 - 响应解析方式错误
你的getComment接口返回的是纯字符串,不是JSON格式,前端用response.json()解析会抛出语法错误,即使跨域问题解决了也无法正常拿到返回结果。 - 跨域配置和请求配置不匹配(可选)
你在@CrossOrigin中设置了allowCredentials = "true",如果后续需要请求携带Cookie、HTTP认证信息等身份凭证,前端fetch需要同步添加credentials: 'include'配置,否则跨域配置不会生效。
修复方案
- 第一步:修改前端请求路径和解析方式,JS代码调整为:
const fetchrequest = () => { fetch('http://localhost:8080/test/comment', { credentials: 'include' // 如果不需要携带身份凭证可以删掉这行,同时删掉@CrossOrigin里的allowCredentials配置 }) .then(response => response.text()) // 替换json()为text()适配纯文本返回 .then(data => console.log(data)) }
- 可选调整:如果需要接口路径为根路径的
/comment,可以删除RequestTest类上的@RequestMapping("/test")注解,前端保持请求http://localhost:8080/comment即可。 - 优化建议:给
/comment接口指定请求方法,比如改成@GetMapping("/comment"),避免不必要的HTTP方法支持,降低安全风险。
内容的提问来源于stack exchange,提问作者yosemeti
相关产品推荐
相关产品推荐

