基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题

news2025/1/22 7:59:02

基于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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剑指 Offer II 105. 岛屿的最大面积代码注释

题目: 给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表…

第一章 集合框架

文章目录 什么是集合框架集合接口Set和List的区别 集合实现类(集合类)集合算法 什么是集合框架 官方教程 Java 集合框架 Java Collection Framework ,又被称为容器container,是定义在java.util包下的一组接口 interfaces和其实现…

【华为HCIP | 高级网络工程师】刷题日记(8)

个人名片: 🐼作者简介:一名大二在校生 🐻‍❄️个人主页:落798. 🐼个人WeChat:落798. 🕊️系列专栏:零基础学java ----- 重识c语言 ---- 计算机网络 🐓每日一…

68.建立手风琴组件第一部分

本节目标 使用的文件 本次使用的文件可私信我获取,本次就只有两张图片 ● 我们导入两个照片至我们的项目文件夹,并新建一个HTML文件 ● 之后我们输入感叹号,让他自动为什么生成初始代码 ● 之后我们修改下title,导入字体、…

springboot+vue家具网站(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家具网站。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&#…

kafka之消费者进阶

一、几个概念 1. 消费者组 消费者组:一个消费者组包含多个消费者。同一个消费组的消费者,分别消费不同的partition,便于加快消费。 kafka约定在一个消费者组中,对于同一个topic,每个consumer会分配不同partition&am…

Unity搭建VR全景图

VR全景图片显示和相机旋转 ** 如果需要内置面材质球文件,可以私信下我 ** 场景构建 创建项目后拖进所需文件 文件有内置面材质球、图片等 创建文件 拖拽内置面材质球进入场景,并设置相机在球内部 再创建一个材质球,命名和图片相同 选…

springcloud+springboot+vue学生信息管理系统(选课,成绩,奖惩,奖学金,缴费)xnt81

后端语言:Java 框架:springcloudspringboot 数据库:mysql 数据库工具:Navicat 学生信息管理系统主要实现角色有管理员和学生,教师,管理员在后台管理学生模块、学籍信息模块、选择课程模块、用户表模块、收藏表模块、课程信息模块…

国产航顺HK32F030M: 448byte EEPROM

EEPROM (~Electrically Erasable Programmable read only memory~)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 HK32F030M用户手册V1.1.9.pdf bsp_eeprom.c #include "bsp_eeprom.h"/*****************************************************…

springboot+vue房产销售平台(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的房产销售平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

切换以太网接口MAC地址的批处理脚本

MAC(媒体访问控制)地址是网络设备的唯一标识符,用于网络通信。MAC 地址通常在设备制造时被分配并写入硬件。然而,在某些情况下,你可能需要或想要更改设备的 MAC 地址。以下是一些可能的理由: 1. **隐私和安…

Linux期末复习总结

一、Linux基础及安装 LINUX是在UNIX基础上开发,具有UNIX全部功能。 **Linux特点:**开放性、多用户、多任务、出色的稳定性、良好的用户界面、设备独立性、丰富的网络功能、安全性、可移植性 Linux由4个主要部分组成:内核、Shell、文件系统、应用程序 …

【Python入门篇】——Python中循环语句(while循环的基础语法和基础案例)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

如何获得高并发经验?看这篇文章就够了

如何获得高并发经验? 这是我今天逛知乎的时候系统邀请我回答的一个问题,由此也引发了我的一些思考:为什么人人都想要获得高并发经验;想拥有高并发系统设计技能? 其原因LZ认为主要有以下三点: 涨薪&#x…

MD-MTSP:麻雀搜索算法SSA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个𝑛座城市的城市集…

【C++】内联函数----inline函数的详细使用教程

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

分享一个一键换肤按钮(超酷)

先上效果图&#xff1a; 效果图中转换为黑夜会有一个宇航员小猴子飞上来&#xff0c;途中没有截到。。。。 废话不多说&#xff0c;上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…

通过VS开发人员命令提示符(developer command prompt)查看类

1.首先打开开始菜单栏&#xff0c;找到相应的VS版本。这里以VS2022为例 2.找到developer command prompt选项&#xff0c;点击进入 3.进入控制台&#xff0c;进入源文件所在的盘符&#xff08;这里以D盘为例&#xff0c;如果是默认C盘可以不用改&#xff09; 4.输入cd 文件地址…

printBanner

主类 package com.example.demo;import com.application.Application;public class Demo {public static void main(String[] args) {Application application new Application("application.properties");application.run();}}创建对象&#xff0c;需要的参数&…

第十三届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十三届蓝桥杯青少组省赛Python真题,包含答案 一、选择题 第 1 题 单选题 下列关于函数的说法正确的是 () 。 答案&#xff1a;C 第 2 题 单选题 十进制数55转换成十六进制是 () 。 答案&#xff1a;C 第 3题 单选题 下列方法中&#xff0c;哪…