springboot对cros的校验
springboot怎么配置跨域?
一、在接口/类上加一个注解@CrossOrign
plaintext
1 | @CrossOrigin(origins = {"http://localhost:9000", "null"}) |
二、写一个配置类实现WebMvcCofigurerAdapter
plaintext
1 | @Configuration |
三、原理刨析
Spring中对CORS规则的校验,都是通过委托给DefaultCorsProcessor实现的。
DefaultCorsProcessor处理过程如下:
- 1、首先判断是否为
cros请求;如果Header中是否包含Origin,如果有则是,否则不是; - 2、然后再判断
response的Header是否已经包含Access-Control-Allow-Origin,如果包含,说明被处理过了,转下一步,否则之后不做处理; - 3、判断是否同源,如果是则转交给负责该请求的类处理;
- 4、不是同源,判断是否配置了
cros规则,如果没有配置,且是预检请求,则拒绝该请求,不是预检请求则交给负责该请求的类处理;如果配置了则对该请求进行校验。
校验是根据
CorsConfiguration这个类的配置进行判断
- 判断
origin是否合法 - 判断
method是否合法 - 判断
header是否合法 - 如果全部合法,则在
response header中添加响应的字段,并交给负责该请求的类处理,如果不合法,则拒绝该请求。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


