哇,刚看到了跨域的源代码,还好理解。所以写一篇有关跨域文章。
什么是跨域:
指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指,域名,协议,端口均相同。
了解问题之后要开始解决问题了。
springboot配置跨域还是很好实现的。
首先我创建一个配置类:CorsFilterConfig
一定要加上@Configuration这个注解,后面要用到@Bean注解
编写crosFilter方法返回值类型为FilterRegistrationBean
FilterRegistrationBean是springboot的一个过滤器。
接下来我们new一个CorsConfiguration类。
关于CorsConfiguration见名知意是一个跨域配置类
源代码大概是这么形容的:一个用于CORS配置的容器,以及用于检查的方法给定请求的实际来源、HTTP方法和标头。在默认情况下,一个新创建的 CorsConfiguration不允许任何跨源请求,必须显式配置以指示什么应该被允许。
贴出部分源代码:
见名知意,我们可以通过这个类去配置要允许的内容。比如头,方法等等。
我允许了以下几个。 *代表所有。
接着创建一个UrlBasedCorsConfigurationSource类。
UrlBasedCorsConfigurationSource:根据映射到路径模式的CorsConfiguration集合提供每个请求的CorsConfiguration实例。支持精确的路径映射uri(例如“/admin”),也支持ant样式的路径模式(例如“/admin/**”)。
老规矩,贴出源代码:
UrlBasedCorsConfigurationSource实现了CorsConfigurationSource接口,我们看下这个接口里面有什么。
这是里面熟悉不,有个返回CorsConfiguration类型的方法。
我们看下UrlBasedCorsConfigurationSource的具体实现:
然后我们用UrlBasedCorsConfigurationSource的registerCorsConfiguration把路径和配置信息注册进去。
接下来注册过滤器FilterRegistrationBean.
order值越小,Filter越早经过。
好了这么一个跨域完成了。
下面贴出全部代码: