您的位置:

使用Spring Boot实现跨域资源共享(CORS)设置

在Web开发中,跨域资源共享是一种重要的技术,它可以让浏览器跨越不同的域名、协议、端口进行资源的访问和交互。本文将从以下几个方面对使用Spring Boot实现跨域资源共享(CORS)设置进行详细的阐述。

一、Spring Boot中的CORS设置

Spring Boot提供了一种简单的方式来配置CORS。我们可以使用org.springframework.web.filter.CorsFilter类来实现对跨域资源的共享。以下的代码示例展示了如何使用CorsFilter:

    \@Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

上面的代码创建了一个CorsFilter bean,并且通过config对象对CORS进行了配置。setAllowCredentials(true)允许cookies被发送到服务器。addAllowedOrigin("*")允许来自所有域的请求,addAllowedHeader("*")允许请求中的所有头信息,addAllowedMethod("*")允许使用所有的HTTP方法(GET、POST等)。最后,将上述所有的配置应用到所有的URL上。UrlBasedCorsConfigurationSource类将CorsConfiguration实例应用到所匹配的URL上,并且返回具有所有适当CORS设置的CorsFilter实例。

二、使用配置类设置CORS

除了上述代码将CORS设置应用于所有URL之外,我们还可以使用Java配置类来实现CORS设置。以下的代码示例展示了如何使用Java配置类实现CORS设置:

    \@Configuration
    public class CorsConfig {
        
        private CorsConfiguration buildConfig() {
            CorsConfiguration config = new CorsConfiguration();
            config.setAllowCredentials(true);
            config.addAllowedOrigin("*");
            config.addAllowedHeader("*");
            config.addAllowedMethod("*");
            return config;
        }

        \@Bean
        public CorsFilter corsFilter() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            source.registerCorsConfiguration("/**", buildConfig());
            return new CorsFilter(source);
        }
    }

上述代码将CORS设置应用于所有域,并且允许所有的HTTP方法。

三、在Controller中设置CORS

除了使用CorsFilter和Java配置类来设置CORS之外,我们还可以在Controller中设置CORS。以下的代码示例展示了如何在Controller中设置CORS:

    \@RestController
    \@CrossOrigin(origins = "*", maxAge = 3600)
    public class TestController {
        // Controller代码
    }

使用@CrossOrigin注释来启用CORS,并且将允许的域设置为"*"。此外,将maxAge设置为3600 seconds,表示预检请求有效期。

四、总结

通过以上的介绍,我们了解了在Spring Boot中如何实现CORS设置,包括通过CorsFilter和Java配置类来实现CORS设置,并且我们还可以在Controller中设置CORS。通过学习CORS设置,我们可以更好地进行Web开发,使得浏览器可以更加灵活地与不同域的资源进行交互。