micro-app icon indicating copy to clipboard operation
micro-app copied to clipboard

在子应用里面发送请求会拼接主应用的前缀(ip和端口号)

Open Chonglin-X opened this issue 2 years ago • 8 comments

<micro-app name='vue-test-1' url='http://127.0.0.1:9999'></micro-app>

以上是子应用路径,页面加载子应用后,在子应用操作请求,请求地址前缀会变成是主应用的(http://192.168.0.101:81/sys) 正常应该是http://127.0.0.1:9999/sys 这个怎么配置解决呢

Chonglin-X avatar May 25 '22 08:05 Chonglin-X

这种情况只能手动补全

bailicangdu avatar May 25 '22 09:05 bailicangdu

可以通过反向代理,进行转发,大概意思是:

假设目前的接口地址为:/sys

那么你可以改变子应用,所有接口增加前缀,例如 /sub-xxx/sys

然后在网关层,或者主应用的 NGINX 中发现 /sub-xxx 转发到子应用的服务地址

不知这种方式能否解决

dream2023 avatar May 26 '22 01:05 dream2023

谢谢解答! 我目前处理方法是把子应用的请求前缀写死, 路由添加配置:axios.defaults.baseURL = "http://127.0.0.1:9999" 设置后主应用调用子应用的时候不再获取浏览器的前缀。

Chonglin-X avatar May 26 '22 02:05 Chonglin-X

谢谢解答! 我目前处理方法是把子应用的请求前缀写死, 路由添加配置:axios.defaults.baseURL = "http://127.0.0.1:9999" 设置后主应用调用子应用的时候不再获取浏览器的前缀。

如果只有一个环境可能这样就够了,但如果是多个环境,比如开发和生产,如果不用反向代理,搞一个 if/else,

function getBaseUrl() {
const mianUrl = location.origin // 主应用域名
if(mainUrl === dev 环境) {
 return dev子域名
} else if (mainUrl === 生产环境) {
return 生产子域名
}
}

dream2023 avatar May 27 '22 02:05 dream2023

.env,开发/测试/生产不同的路径

cnLiuMing avatar May 27 '22 05:05 cnLiuMing

如果只有一个环境可能这样就够了,但如果是多个环境,比如开发和生产,如果不用反向代理,搞一个 if/else,

太棒了,谢谢解答

Chonglin-X avatar May 27 '22 05:05 Chonglin-X

.env,开发/测试/生产不同的路径

谢谢

Chonglin-X avatar May 27 '22 05:05 Chonglin-X

没有办法通过中间件的方案来自动补齐吗

Otto-J avatar Jul 14 '22 03:07 Otto-J

axios.defaults.baseURL = window.__MICRO_APP_PUBLIC_PATH__ || location.origin;

这样写也可以

evemike avatar Oct 27 '22 08:10 evemike