跨域有两种方式可以进行配置
方式一: 在请求方法上添加注解
@RestController
@RequestMapping("/book")
public class BookController {
@PostMapping("/")
@CrossOrigin(value = "http://localhost:8081"
,maxAge = 1800,allowedHeaders = "*")
public String addBook(String name) {
return "receive:" + name;
}
@DeleteMapping("/{id}")
@CrossOrigin(value = "http://localhost:8081"
,maxAge = 1800,allowedHeaders = "*")
public String deleteBookById(@PathVariable Long id) {
return String.valueOf(id);
}
}
- CrossOrigin中的value表示支持的域,这里表示来自http://localhost:8081的请求是支持跨域的
- maxAge表示探测请求的有效期
- allowedHeaders 表示允许的请求头,*表示所有的请求头都被允许
上面这种配置方式可以控制到每一个方法,而另一种方法不必再添加@CrossOrigin注解
方式二:使用全局配置
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/book/**")
.allowedHeaders("*")
.allowedMethods("*")
.maxAge(1800)
.allowedOrigins("http://localhost:8081");
}
}
-
全局配置需要实现WebMvcConfigurer 接口,然后重写接口中的addCorsMappings
-
其中在addCorsMappings中addMapping表示对哪种格式的请求路径进行跨域处理
-
allowedMethods("*")表示请求方法,默认是post,get,head