持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
今天为了增加es支持,用了许久的springboot 2.1.8被我放弃,升级到了2.5.6版本,但随之而来还有跨域的坑。
简单来说说跨域:
1、什么叫跨域?
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同,这就是跨域。
2、为什么会产生跨域?
出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。
跨域是我们前后端分离开发中经常会遇到的一个问题。了解什么叫跨域,为什么会产生跨域后,我们来看看如何解决跨域问题。
先来说说2.1.8版本解决跨域的方法。直接贴代码了,配置类+跨域Bean
@Configuration
public class GlobalCorsConfig { @Bean
public CorsFilter corsFilter() {
//1. 添加 CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//放行哪些原始域
config.addAllowedOrigin("*");
//是否发送 Cookie
config.setAllowCredentials(true);
//放行哪些请求方式
config.addAllowedMethod("*");
//放行哪些原始请求头部信息
config.addAllowedHeader("*");
//暴露哪些头部信息
//config.addExposedHeader("*");
//2. 添加映射路径
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
corsConfigurationSource.registerCorsConfiguration("/**",config);
//3. 返回新的CorsFilter
return new CorsFilter(corsConfigurationSource);
}
}
但是当你升级到了2.5.6之后的版本就会遇到新的跨域,这个雷已经不能解决问题了
所以赶紧去官方文档查看一下,找到了解决方案,在启动类下增加如下Bean,代码块如下
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowCredentials(true).allowedOriginPatterns("*");
}
};
}
好了问题解决了,如果对你解决问题有帮助,请动动你的小手,点个赞。
喜欢,请关注公众号《coder练习生》