解决Spring Boot项目跨域问题

在开发Spring Boot项目时,经常会遇到跨域问题。跨域是指在浏览器中,一个域名的网页去请求另一个域名的资源,这种情况下浏览器会阻止这种请求,以保护用户的安全。为了解决这个问题,我们可以采取以下几种方法:

方法一:使用注解

在Spring Boot中,可以使用@CrossOrigin注解来解决跨域问题。只需要在Controller类或方法上添加该注解,即可允许跨域请求。

@RestController
@CrossOrigin
public class MyController {
    // ...
}

方法二:配置跨域过滤器

另一种解决跨域问题的方法是配置一个跨域过滤器。可以通过创建一个实现了Filter接口的类,并在doFilter方法中添加跨域相关的配置。

@Component
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        httpResponse.setHeader("Access-Control-Max-Age", "3600");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept, X-Requested-With, remember-me");
        chain.doFilter(request, response);
    }
}

方法三:使用全局配置类

还可以使用全局配置类来解决跨域问题。创建一个类,并使用@Configuration注解标记,然后在类中添加一个addCorsMappings方法来配置跨域相关的设置。

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }
}

以上是解决Spring Boot项目跨域问题的几种常用方法。根据具体的需求,选择适合自己项目的方法来解决跨域问题。