返回

Spring Boot CORS 跨域配置进阶指南:四招轻松解决跨域问题

后端

导言

对于现代 Web 应用程序来说,跨域资源共享 (CORS) 至关重要。它允许不同来源之间的 Web 应用程序进行通信,从而打破了浏览器同源政策的限制。Spring Boot 为 CORS 提供了出色的支持,本文将深入探讨四种实现 CORS 的方法,助你轻松解决跨域问题。

1. 基于注解的 CORS 配置

Spring Boot 提供了 @CrossOrigin 注解,可以通过将此注解添加到控制器类或方法上来启用 CORS。注解属性允许你指定允许的来源、HTTP 方法和标头。

@RestController
@CrossOrigin(origins = "https://example.com", methods = RequestMethod.GET, allowedHeaders = "Authorization")
public class MyController {
    // ...
}

2. 基于配置的 CORS 配置

如果你希望使用更细粒度的控制,可以配置 WebMvcConfigurer Bean。这允许你全局配置 CORS 设置,覆盖注解中指定的内容。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("https://example.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("Authorization", "Content-Type")
                .exposedHeaders("Location");
    }
}

3. 手动添加 CORS 标头

如果你无法使用注解或配置,可以通过在拦截器中手动添加 CORS 标头来实现 CORS。这提供了最大程度的灵活性,但需要更多的手动编码。

@Component
public class CorsInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        response.setHeader("Access-Control-Allow-Origin", "https://example.com");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type");
        return true;
    }
}

4. 使用第三方库

有许多第三方库可以简化 CORS 实现。它们提供开箱即用的功能,无需编写太多代码。流行的选择包括:

结论

Spring Boot 为实现 CORS 提供了多种方法,允许你根据应用程序的特定需求选择最合适的方法。通过使用这些方法,你可以轻松配置 CORS 设置,确保跨域 Web 应用程序之间的无缝通信。现在,你已掌握了实现 CORS 的进阶指南,祝你在构建无缝用户体验的 Web 应用程序时一路顺风!