需求:
在项目开发中,前后端分离,接口联调时候,前端页面直接调取后台接口,前后端开发使用不同的电脑,因此页面的ajax请求会发送不成功。
解决方案:
springboot的官方文档中给出了相应的解决方案,只需要配置一个WebMvcConfigurer,这种是全局配置,即所有请求都可以。代码如下:
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
也可以根据自己的需求自定义:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain2.com")
.allowedMethods("PUT", "DELETE")
.allowedHeaders("header1", "header2", "header3")
.exposedHeaders("header1", "header2")
.allowCredentials(false).maxAge(3600);
}
除上述的全局配置外:
也可以直接针对某个controller或者具体到某一个方法进行设置,使用注解@CrossOrigin即可,该注解可以作用于类上,也可以作用于方法上。
具体可以参考springboot官方文档:
https://spring.io/blog/2015/06/08/cors-support-in-spring-framework
网友评论