Springboot怎么通过配置WebMvcConfig处理Cors非同源访问跨域问题
更新时间:2023-08-03前言:
跨域是指在浏览器中,发送的请求存在不同的域名、端口或协议,这时就会触发浏览器的同源策略安全机制。跨域请求将会被浏览器拦截,不允许接收响应结果。为了解决这个问题,我们可以通过配置WebMvcConfig来处理跨域问题,允许非同源访问。
处理跨域问题的步骤:
第一步,创建一个配置类WebMvcConfig,并继承WebMvcConfigurerAdapter。这个类主要用于配置拦截器、格式转换、跨域请求等。
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { }
第二步,在配置类中重写addCorsMappings方法,用于添加跨域映射。在该方法中,我们可以通过CorsRegistry对象添加允许跨域访问的规则。
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://localhost:8080") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("Content-Type") .allowCredentials(true) .maxAge(3600); } }
在上述代码中,我们添加了一个跨域映射,表示针对"/api/**"路径的请求,允许来自"http://localhost:8080"的跨域访问。其中allowedOrigins方法用于指定允许跨域请求的源地址,allowedMethods方法用于指定允许的请求方法,allowedHeaders方法用于指定允许的请求头,allowCredentials方法用于指定是否允许发送Cookie,maxAge方法用于指定跨域访问的最大时间。
第三步,在Spring Boot的启动类中,使用@EnableWebMvc注解,以启用Spring MVC的自动配置。这样,Spring Boot会自动加载WebMvcConfig配置类,从而实现跨域访问的配置。
@SpringBootApplication @EnableWebMvc public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
总结:
通过配置WebMvcConfig处理Cors非同源访问跨域问题的步骤包括创建配置类、重写addCorsMappings方法、使用@EnableWebMvc注解。通过这些步骤,我们可以配置允许哪些跨域请求访问,以及允许的请求方法、请求头、是否允许发送Cookie等。配置完毕后,我们的Spring Boot应用就可以处理跨域请求,解决非同源访问的跨域问题。