同一个前端包,生产和监理域名不同

17 阅读1分钟

使用vue3 + axios

1.背景

在项目上线过程中:包只能上到监理环境,生产环境的包直接拿监理的包去用

那么由于服务器ip不同,请求的后端路径也不同,那么怎么在前端的axios中配置动态的后端请求路径呢?

2.思路

首先想到的就是后端提供一个接口给我们,让我们知道应该请求的路径是什么,但是如果有这么一个接口,也需要知道这个接口的路径,这个接口如果我们自己后端提供,明显陷入一个循环了,无法实现;如果有一个第三方的服务可以提供这个路径(比如公共的注册中心),那么我们先试监理的后端地址请求,请求失败再试生产的后端地址;但是很可惜,目前没有这样的注册中心。 那么只能想想别的办法,观察请求的后端url发现,服务器的地址和请求的url相同,那么我们就可以将请求的url在浏览器中获取到,然后拿来去请求后端的url。 axios的配置代码:

// 配置新建一个 axios 实例
const service: AxiosInstance = axios.create({
	baseURL: window.location.origin,
	timeout: 50000,
	headers: { 'Content-Type': 'application/json;charset=utf-8' },
	paramsSerializer: {
		serialize(params) {
			return qs.stringify(params, { allowDots: true });
		},
	},
	withCredentials: true,
});

最重要的就是window.location.origin获取浏览器的请求源了