一、什么是跨域
当一个请求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表示支持的域。

本文详细解析了跨域的概念,即当请求URL的协议、域名或端口与页面URL不匹配时产生的问题,并提供了通过全局配置解决跨域的具体方法。

627

被折叠的 条评论
为什么被折叠?



