基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题
通过Ant DesignPro Vue + SpringBoot 搭建的后台管理系统后,实现了前后端分离,并实现了登录认证,认证成功后返回该用户相应权限范围内可见的菜单;但时将服务打包部署后遇到了跨域的问题。本文解决了打包发布部署后的跨域问题。
Ant Design Pro相关系列文章:
 一、AntDesign Pro安装过程
 二、基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单-前端部分
 三、基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单-SpringBoot后端部分
 四、搭建Vue版Ant Design Pro后台管理系统
 五、基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离
 六、基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题
目录
- 基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题
 - 一、问题描述
 - 二、解决方案
 - 1、前端修改
 - 1)、修改vue.config.js
 - 2)、修改.env
 - 3)、修改.env.development
 - 4)、重新编译发布
 
- 2、后端修改
 - 1)、在springboot后端服务工程添加跨域配置类
 - 2)、重新编译jar
 
- 3、重新部署
 - 1)、停止运行的容器
 - 2)、删除旧的docker images
 - 3)、重新打包Docker镜像,并运行
 
一、问题描述
通过Ant DesignPro Vue + SpringBoot 搭建的后台管理系统后,实现了前后端分离,并实现了登录认证,认证成功后返回该用户相应权限范围内可见的菜单;但时将服务打包部署后遇到了跨域的问题,通过网络请求中获取到信息是:strict-origin-when-cross-origin,如下图所示:
 
二、解决方案
1、前端修改
1)、修改vue.config.js
将devServer配置项中添加proxy配置项,并将target改为process.env.VUE_APP_API_BASE_URL
  devServer: {
    // development server port 8000
    port: 8000,
    // If you want to turn on the proxy, please remove the mockjs /src/main.jsL11
    proxy: {
       '/api': {
         target: process.env.VUE_APP_API_BASE_URL,
         ws: false,
         changeOrigin: true
       }
     }
  },
 
2)、修改.env
VUE_APP_API_BASE_URL=生产环境的后端服务接口地址
 

3)、修改.env.development
VUE_APP_API_BASE_URL=开发环境的后端服务接口地址
 

4)、重新编译发布
在前端代码根目录执行下面命令
yarn run build
 

 
 出现上面的提示表示编译成功。
2、后端修改
1)、在springboot后端服务工程添加跨域配置类
package cn.chinaelink.im.mcvboot.config;
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;
@Configuration
public class CrossOriginConfig {
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addAllowedOriginPattern("*");
        corsConfiguration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(source);
    }
}
 

2)、重新编译jar

3、重新部署
1)、停止运行的容器
docker stop test-mcvboot
docker stop mcui-mcvboot
docker rm mcui-mcvboot
docker rm test-mcvboot 
 

2)、删除旧的docker images
docker images
docker rmi -f mcui
docker rmi -f mcvboot
 

3)、重新打包Docker镜像,并运行
cd /opt/mcvboot/
docker build -t mcvboot .
docker run --name test-mcvboot -d -p 8080:8080 mcvboot
cd /opt/mcvboot/antdvPromc
docker build -t mcui .
docker run --name mcui-mcvboot -d -p 8000:80 mcui
 

 
 


















