一、什么是跨域
当一个请求url的协议、域名(主域名、子域名)、端口三个之中任一个与页面的url不同,即可认为是跨域。
页面的url | 请求的url | 是否跨域 | 原因 |
http://www.book.com/ | https://www.book.com/ | 是 | 协议不同(http/https) |
http://www.book.com/ | http://www.baidu.com/ | 是 | 域名不同(主域名不同) |
http://www.book.com/ | www://blog.book.com | 是 | 域名不同(子域名不同) |
http://www.book.com:8080/ | http://www.book.com:8081/ | 是 | 端口不同 |
二、跨域的解决办法。
跨域在两个方法可以配置。一个是直接在相应的请求方法上加注解,另一个是进行全局配置。下面主要讲的是用全局配置。
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer{
@Override
public void addCorsMapping(CorsRegistry registry) {
registry.addMapping("/book/**")
.allowedHeader("*")
.allowedMethods("*")
.maxAge(1800)
.allowedOrigins("https://locahost:8081");
}
代码解释:
在addCorsMappings方法中,addMapping表示对哪种格式的请求路径进行跨域处理,allowedHeaders表示允许的请求头,默认允许所有的请求头信息。allowedMethods表示允许的请求方法,默认的有put、delete、post、get。*表示支持所有方法。maxAge表示请求的有效期。allowedOrigins表示支持的域。