1.跨域
被访问网站 不允许 网域外的请求进行访问
2.CORS
是跨域资源共享,是一种允许非同源的地址或端口的js请求的放行协议
3.解决跨域的方法
(1)用注解
@CrossOrigin(allowCredentials = "true" , originPatterns = " * ", allowHeaders = " * " )
配置类
@Component
public class WebMvcConfiguration implements WebMvcConfigurer {
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 添加路径规则
.allowCredentials(true) // 是否允许在跨域的情况下传递Cookie
.allowedOriginPatterns("*") // 允许请求来源的域规则
.allowedMethods("*")
.allowedHeaders("*") ; // 允许所有的请求头
}
}
(2)网关代理
不同网域的服务由同一个路由网关进行转发,如:nginx、gateway
(3)用<script>标签
jsonp框架、
<script>标签的src属性没有跨域限制
4.哪些类型属于跨域
(1)不同请求:http、https
(2)不同域名
(3)不同端口
5.为什么有预检请求?
用于获取服务端支持的http请求方法
在非简单请求要跨域访问时,在正式请求之前,向服务器发送预检请求
浏览器将CROS请求分为:简单请求和非简单请求
两者的区别就是: 是否需要发送预检请求
简单请求的条件:1.HTTP请求是 Head 、get 、post
2.只包含简单Http请求头