一:作为代码演示,先假设一个业务场景,前端 ,后端
1,前端使用vue3 +vite
2,后端使用golang的 gin 框架(这里只是演示,作用只是写个很简单的接口)
3,服务器使用的是华为云服务器
1,开发阶段的跨域使用脚手架代理(或者叫node代理啥的,反正你懂的)
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path"
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
resolve:{
"@":path.join(__dirname,path.resolve("./src"))
},
server:{
proxy:{
"/api":{
target:"http://localhost:8081",
changeOrigin:true,
rewrite:(path)=>path.replace(/^\/api/,"")
}
}
}
})
// axios
import axios from "axios";
export default axios.create({
baseURL:"/api", //api很重要,后面跨域要用
timeout:10000
})
效果很简陋,
开发阶段我数据请求是本地gin起的服务,http://localhost:8081
2,本地golang服务是个很简单的接口
二:把前端项目和后端项目都打包,上传到我的华为云服务器,golang打包后的文件demo4使用 nohup demo4 & 命令后台启动运行,dist文件放在nginx安装目录下的html目录,然后修改nginx配置文件,配置8082端口给前端项目
此时请求8082端口的效果是这样的
没有请求到服务端数据,因为8082下并没有/api/news 这个接口,此时,需要让以/api/为开头的请求都转发到 8081 的golang服务上,需要修改nginx 配置文件
新增红色框框内的代码,表示匹配到/api/ 字段的请求,把/api 改写为 空字符串,同时把请求转发到proxy_pass 后端跟着到地址,就是golang服务地址
**改完配置文件重新加载nginx -s reload **
已经能请求到数据,跨域问题解决