介绍

目前项目一般采用的是前后端分离,当使用前端node + vue + axios 发送跨域请求时会报错,如下
image.png

解决

需要在项目中配置CorsConfiguration
image.png

代码如下:

  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.web.cors.CorsConfiguration;
  4. import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
  5. import org.springframework.web.filter.CorsFilter;
  6. /**
  7. * 支持跨域请求
  8. *
  9. * @author choahen
  10. * @date 2019/8/7
  11. */
  12. @Configuration
  13. public class CrossConfig {
  14. private CorsConfiguration buildConfig() {
  15. CorsConfiguration corsConfiguration = new CorsConfiguration();
  16. //允许任何域名
  17. corsConfiguration.addAllowedOrigin("*");
  18. //允许任何头
  19. corsConfiguration.addAllowedHeader("*");
  20. //允许任何方法
  21. corsConfiguration.addAllowedMethod("*");
  22. return corsConfiguration;
  23. }
  24. @Bean
  25. public CorsFilter corsFilter() {
  26. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  27. //注册
  28. source.registerCorsConfiguration("/**", buildConfig());
  29. return new CorsFilter(source);
  30. }
  31. }

完美解决。

前端发送请求

  1. axios({
  2. method: "PSOT", //请求方式
  3. url: "home/list", //请求地址
  4. data: {
  5. menu_id: 1,
  6. thirdapp_id: 1 //请求参数
  7. }
  8. })
  9. .then(function(res) {
  10. //返回值
  11. console.log(res.data);
  12. for (var i = 0; i < res.data.length; i++) {
  13. console.log(res.data[i].name);
  14. }
  15. })
  16. .catch(function(err) {
  17. console.log(err);
  18. });
  19. }