0.前言
参考文章:
1.同源策略
同源策略要求:必须保证源相同,方可正常通信,即协议、域名、端口号完全一致
浏览器出于安全考虑,在使用XMLHttpRequest对象发起HTTP请求时,必须遵守同源策略,否则该请求就会被认定为跨域请求
跨域请求能正常发出并被服务器接收和响应,但响应结果被客户端(浏览器)拦截了
2.跨域请求示例
协议不同
-
http://www.example.com
-
https://www.example.com
域名不同(域名访问和ip访问同样会造成跨域问题)
- http://www.example.com (117.34.1.1)
- http://117.34.1.1
子域名不同
- http://www.example.com
- http://e.example.com
端口号不同
-
http://www.example.com(:80)
-
http://www.example.com:8080
3.SpringBoot解决跨域问题
有三种解决方案,在springboot解决跨域问题(Cors)有比较详细的说明
- 创建Filter(过滤器)解决
- 基于WebMvcConfigurerAdapter配置加入Cors的跨域
- 在controller或其方法上加上@CrossOrigin
这里简单介绍一下第三种方法:
既可以在方法上加注解(仅对一个方法生效)
也可以在Controller的类代码上加注解(对该类的所有方法生效)
该注解也可以设置"origins"属性和"maxAge"属性
- origins:允许跨域请求的网址列表
- maxAge:响应前的缓存持续的最大时间
//允许www.a.com和www.b.com发出的跨域请求
@CorssOrigin(origins = {"www.a.com", "www.b.com"}, maxAge = 3600)