一,后端解决跨域问题的两种方式
1,解决局部跨域问题
(1)在Controller上加@CrossOrigin注解:所有方法都是可跨域
(2)在方法上加@CrossOrigin注解:只对某个方法可跨域
2,解决全局跨域问题
@Configuration
public class WebCrossOrigin {
@SuppressWarnings({ "rawtypes", "unchecked" })
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
}
}
二,解决跨域时出现会话不一致问题
(1)后端 - >在注解中加上allowCredentials =“true”:设置是否允许客户端发送cookie信息。默认是false
(2)前端
① vue需要再main.js的import下增加以下代码
axios.defaults.withCredentials = true
② jquery需要再每次使用ajax时增加如下配置
xhrFields:{
withCredentials:true
}
③ angulars
var utils = angular.module('Utils', []);
utils.config(['$httpProvider', config]);
function config($httpProvider) {
$httpProvider.defaults.withCredentials = true; //关键代码
}
参考:https://blog.csdn.net/weixin_40760196/article/details/81169528