Spring MVC跨域访问
1.CORS跨域资源访问(是一种跨域访问的机制):
-
CORS是一种机制,使用额外的HTTP头通知浏览器可以访问其他域
-
CORS跨域访问,只适用于浏览器中的跨域访问策略(微信小程序、手机APP则无效)
-
URL响应头包含Access-Control-*指明请求允许跨域
跨域访问的问题可以分为两中方式:

局部处理
@CrossOrigin:Controller跨域注解,说明当前Controller所映射的URL允许被跨域访问。
@CrossOrigin(origins = {"http://127.0.0.1:8080"},maxAge = 3600)
@PutMapping(value = "/request")
public String doPutRequest(Person person) {
System.out.println(person.getName() + ": " + person.getAge());
return "{\"message\":\"数据更新成功\"}";
}
- maxAge = 3600---单位是秒
作用是,缓存预检请求的结果。在设置的maxAge 时间范围内不需要发两次请求了,而是直接向服务器发送非简单请求“PUT/DELETE”即可。


全局处理
* <mvc:cors>:Spring MVC全局跨域配置,使得项目中所有URL都支持跨域访问。
<!--跨域请求授权全局设置-->
<mvc:cors>
<mvc:mapping path="/restful/**" allowed-origins="http://127.0.0.1:8080" max-age="3600"/>
</mvc:cors>
注解跨域 和 全局跨域配置 在什么场景下使用呢?
-
如果,当前应用是专用于webAPI 也就是只对外提供web数据服务时,此时就需要使用mvc:cors标签进行全局配置了。
-
如果,只是某些Controller需要对外暴露服务,我们就推荐使用注解如果即配置了全局跨域设置,又配置了注解跨域设置,则以注解跨域规定范围为准。