跨域说明
前后端分离下,跨域已是一个老生常谈的话题,但很多小伙伴还是经常面临这样的问题,且解决方案多变多样。这里介绍一种简单直接的后端解决方案。
解决跨域(服务端)
1/** 2 * CorsConfig-跨域 3 * 4 * @author ylyue 5 * @since 2018年11月26日 6 */ 7@Slf4j 8@Configuration 9public class CorsFilterConfig { 10 11 // CorsConfig-跨域 12 13 @Bean 14 @ConditionalOnMissingBean 15 public CorsFilter corsFilter() { 16 final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 17 final CorsConfiguration config = new CorsConfiguration(); 18 19 config.setAllowCredentials(true); 20 config.setAllowedHeaders(Arrays.asList("*")); 21 config.setAllowedMethods(Arrays.asList("*")); 22 config.setAllowedOrigins(Arrays.asList("*")); 23 config.setMaxAge(3600L); 24 25 // 设置response允许暴露的Headers 26// config.setExposedHeaders(exposedHeaders); 27// config.addExposedHeader("token"); 28 29 source.registerCorsConfiguration("/**", config); 30 31 log.info("【初始化配置-跨域】默认任何情况下都允许跨域访问 ... 已初始化完毕。"); 32 return new CorsFilter(source); 33 } 34 35}
基于yue-library解决跨域
上述代码就是从yue-library中摘出来的,所以基于yue-library的项目默认已解决跨域等问题。yue-library是SpringBoot的一个增强库,引入项目依赖即可解决跨域
maven项目,在pom.xml文件中添加如下一段代码,并将${version}替换为对应版本号:
1<parent> 2 <groupId>ai.ylyue</groupId> 3 <artifactId>yue-library-dependencies</artifactId> 4 <version>${version}</version> 5</parent>
随后引入所需要的模块,如基础库:yue-library-base
1<dependencies> 2 <dependency> 3 <groupId>ai.ylyue</groupId> 4 <artifactId>yue-library-base</artifactId> 5 </dependency> 6 ... 7</dependencies>
结语
跨域问题建议服务端解决即可,没必要开启跨域安全访问限制,他也只能阻止一些浏览器中的JS脚本注入,并不能做到真正的安全访问限制。有问题欢迎在下方留言交流...