springboot跨域问题解决方案
Spring Boot 跨域问题解决方案 Spring Boot 跨域问题是指在不同的源(origin)之间请求资源时出现的安全限制问题。这种限制是为了防止恶意脚本攻击,保护用户的隐私和安全。下面我们将详细介绍 Spring Boot 跨域问题解决方案。 什么是跨域问题? 跨域问题是指在不同的源(origin)之间请求资源时出现的安全限制问题。源(origin)是指协议、域名和端口的组合,例如 http://localhost:8080 和 http://localhost:8082 是两个不同的源。浏览器为了防止恶意脚本攻击,会对跨域请求进行限制。 Spring Boot 跨域问题解决方案 Spring Boot 提供了多种解决跨域问题的方法,包括在 Controller 中使用 @CrossOrigin 注解、在 WebMvcConfigurer 接口中实现跨域支持、使用拦截器等。 方法一:使用 @CrossOrigin 注解 在 Controller 中使用 @CrossOrigin 注解可以解决跨域问题。例如: ```java @CrossOrigin @RestController @RequestMapping("/user") public class UserController { // ... } ``` 也可以在方法上加上 @CrossOrigin 注解,例如: ```java @ApiOperation(value = "用户登录", notes = "") @PostMapping("/loginOn") @CrossOrigin public ResponseMessage loginOn(@RequestBody @Valid UserReq userReq) { // ... } ``` 方法二:实现 WebMvcConfigurer 接口 可以实现 WebMvcConfigurer 接口,在接口中进行跨域支持。例如: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT") .maxAge(3600 * 24); } } ``` 方法三:使用拦截器 可以使用拦截器来解决跨域问题。例如: ```java @Component public class RequestInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // ... } } ``` 注意事项 在解决跨域问题时,需要注意以下几点: * 使用 @CrossOrigin 注解时,需要在每个 Controller 中添加注解,否则跨域问题将无法解决。 * 实现 WebMvcConfigurer 接口时,需要在配置类中添加跨域支持。 * 使用拦截器时,需要在拦截器中添加跨域支持。 Spring Boot 跨域问题解决方案有多种方法,可以根据实际情况选择合适的方法。