Spring Boot中如何实现跨域资源共享(CORS)

在Spring Boot中实现跨域资源共享(CORS)可以通过以下步骤:

  1. 添加CORS配置类: 创建一个配置类,继承自WebMvcConfigurerAdapter(在Spring Boot 2.x版本中,应继承自WebMvcConfigurer)。在该配置类中覆盖addCorsMappings()方法,添加CORS相关配置。

  2. 配置CORS规则:addCorsMappings()方法中,通过registry.addMapping("/**")指定允许跨域请求的路径,使用allowedOrigins()allowedMethods()allowedHeaders()等方法来设置允许的源、HTTP方法和请求头。

  3. 注册CORS配置类: 将自定义的CORS配置类注册为一个Bean,使其生效。

下面是一个简单的示例:

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("http://example.com") // 允许的源,可以设置多个,也可以使用通配符 *
            .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法
            .allowedHeaders("*"); // 允许的请求头,可以设置多个
    }
}

上述示例中,配置了允许来自http://example.com的跨域请求,允许的HTTP方法为GET、POST、PUT和DELETE,允许的请求头为任意请求头。

请注意,使用CORS可能会导致安全风险,建议仅在必要时开启跨域访问。如果需要更灵活的配置,还可以使用allowedMethods()allowedHeaders()等方法来设置更具体的规则。

另外,Spring Boot还提供了更简单的配置方式,你可以在application.propertiesapplication.yml中添加以下配置:

spring:
  cors:
    allowed-origins: http://example.com
    allowed-methods: GET,POST,PUT,DELETE
    allowed-headers: "*"

通过上述配置,也可以实现相同的CORS配置。