SpringSecurity环境下配置CORS跨站资源共享规则
一、CORS简述
要说明CORS(Cross Origin Resourse-Sharing) 跨站资源共享,就必须先说同源策略。长话短说,同源策略就是向服务端发起请求的时候,以下三项必须与当前浏览器应用一致:域名、端口、协议。用白话说:就是在你的应用发送请求不能访问别人的资源,否则浏览器就会限制你。当然也有例外,如:img、srcipt、iframe等资源引用的HTML标签不受同源策略的限制。
但是我们实际开发中又经常会跨站访问,比如前后端分离的应用是分开部署的,在浏览器看来是两个域。所以同源策略是用来禁止跨域访问的,CORS正好相反是根据自己的需求与规则,有限的开放部分资源的共享。
二、Spring-CORS规则基础配置
想在Spring或Spring Boot的web环境下实现跨域资源共享,主要有三种实现方式:
@CrossOrigin注解,这个注解是作用于Controller类或者请求方法上的,实现局部接口的跨域资源共享。
实现WebMvcConfigurer接口addCorsMappings方法,实现全局配置的跨域资源共享。
注入CorsFilter过滤器,实现全局配置的跨域资源共享。推荐使用。
这三种实现方式在我之前发过的的另外一篇文章《SpringBoot解决跨域访问的问题》中已经介绍过,这里就不多做说明了。在Spring Security环境下提供了第四种CORS规则配置方法,请关注下文。
三、Spring Security 中的配置CORS
当我们的应用使用了Spring Security之后,我们会发现上面的配置方法全部失效。此时需要在spring security的WebSecurityConfigurerAdapter中的configure(HttpSecurity http)配置方法,加上http.cors()配置,第二小节中的配置才会生效。
另外Spring Security为我们提供了一种新的CORS规则的配置方法:CorsConfigurationSource 。使用这种方法实现的效果等同于注入一个CorsFilter过滤器。
推荐:SpringBoot系列精品文章(16章97节), http://springboot.zimug.com
本号只做持续的知识输出,希望您能关注、评论、转发!您的支持是我不竭的创作动力!让知识产生价值、让程序员改变世界!