Vue Cli前后端分离项目,映射后前端无法访问接口

问题描述

公司内部自用项目(前后端分离),部署在重庆,深圳总部需要访问。使用frpc配置内网穿透后,项目无法登陆。

问题排查
  • f12后发现login请求地址是localhost:8080,但深圳这边发现并无此项服务。所以得出原因,因为项目前后端分离,所以frpc虽然可以映射到初始页面,但后续的api接口地址都是直接写死在js内,所以得不到正确的路径。
解决方案
  • 使用vuex,axious配合解决问题。在第一次login登录失败时,在axious内部catch使用vuex直接commit,将api地址改为映射地址。这样就可以保证后续项目可以正常访问。

  • 代码如下:

      this.$axios({
          method: 'POST',
          url: this.$store.state.apiAddress + '/login',
          data: {
            uid: values.uid,
            password: values.password
          }
        })
          .then(response => {
            // console.log('获取的返回值:', response)
            if (response.data.code === '0') {
              this.$router.push('home')
              this.$store.commit('setAdmin', response.data.data.admin)
              // console.log('当前的权限标志:', this.$store.state.admin)
            } else {
              this.$notification['warning']({
                message: '登录失败',
                description: response.data.msg
              })
            }
          })
          .catch(err => {
            console.log(err)
            /* this.$notification['warning']({
              message: '登录失败',
              description: '请检查网络或联系管理员解决'
            }) */
            this.$store.commit('changeApiAdderss')
            // this.handleSubmit()
          })
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值