介绍
目前项目一般采用的是前后端分离,当使用前端node + vue + axios 发送跨域请求时会报错,如下
解决
需要在项目中配置CorsConfiguration
。
代码如下:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/**
* 支持跨域请求
*
* @author choahen
* @date 2019/8/7
*/
@Configuration
public class CrossConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
//允许任何域名
corsConfiguration.addAllowedOrigin("*");
//允许任何头
corsConfiguration.addAllowedHeader("*");
//允许任何方法
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//注册
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}
完美解决。
前端发送请求
axios({
method: "PSOT", //请求方式
url: "home/list", //请求地址
data: {
menu_id: 1,
thirdapp_id: 1 //请求参数
}
})
.then(function(res) {
//返回值
console.log(res.data);
for (var i = 0; i < res.data.length; i++) {
console.log(res.data[i].name);
}
})
.catch(function(err) {
console.log(err);
});
}