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

Angular11与Spring Boot Gradle(JPA)前后端交互时CORS跨域问题的解决方法咨询

解决Angular + Spring Boot的CORS跨域问题

嘿,作为全栈新手遇到这个问题太正常了——这是浏览器的同源策略在搞鬼!你的前端跑在localhost:4200,后端在localhost:8082,属于不同的源,浏览器会默认阻止这种跨域请求,除非后端明确允许。下面给你几种靠谱的解决办法,按推荐程度排序:

1. 全局CORS配置(推荐,一次性搞定整个应用)

这种方式适合给整个Spring Boot应用开启跨域支持,不用每个控制器都单独设置。创建一个配置类:

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 implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 允许所有接口路径
                .allowedOrigins("http://localhost:4200") // 允许你的Angular前端源
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的HTTP方法,别忘了OPTIONS(浏览器预检请求会用)
                .allowedHeaders("*") // 允许所有请求头
                .allowCredentials(true); // 如果需要携带Cookie等凭证的话开启
    }
}

写完之后重启你的Spring Boot服务,这样所有接口都能接受来自localhost:4200的请求了。

2. 控制器/方法级别配置(针对单个接口)

如果你只想给/addTodo这个接口单独开跨域,可以直接在方法或者控制器类上加@CrossOrigin注解:

// 在方法上添加
@PutMapping(path="/addTodo" ,consumes=MediaType.APPLICATION_JSON_VALUE)
@CrossOrigin(origins = "http://localhost:4200") // 这里指定允许的源
public ResponseEntity<Todo> addTodo(@RequestBody Todo todo) {
 todoservice.addTodos(todo);
 return new ResponseEntity<Todo>(todo,HttpStatus.OK);
}

或者给整个控制器类加,这样这个控制器下的所有接口都生效:

@RestController
@CrossOrigin(origins = "http://localhost:4200")
public class TodoController {
    // 你的接口方法...
}

3. 额外小提醒

  • 确保你的Angular请求里,Content-Type是application/json(你已经用JSON.stringify(todo)了,这点没问题,且后端的consumes=MediaType.APPLICATION_JSON_VALUE也对应上了,做得很好)
  • 如果后续部署到生产环境,记得把allowedOrigins改成你的前端实际域名,比如"https://your-frontend-domain.com",不要用"*"(除非你真的允许所有源访问,这在生产环境不太安全)

做完上面的配置,重启后端,再试试你的Angular请求,应该就能正常调用了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:32:47