解决UniApp运行到浏览器跨域的问题

514 阅读1分钟

最近用HBuilder X开发H5项目,调试接口时运行到浏览器产生了跨越问题,网上有很多解决方案,一开始以为是没有效果的,直到试了好多次才解决。

打开项目中manifest.json文件,点击源码视图,下拉找到h5,如果没有就自己写一个,然后进行配置

"h5": {
    "devServer": {
      "proxy": {
        "/api": {
          "target": "http://192.168.3.12:9000",
          "changeOrigin": true
        }
      }
    }
  }

下面是示例请求,一定要跟上面配置对应上

    uni.request({
      url: "http://192.168.3.12:9000/api/login",
      data:{},
      header: {},
      success: (res) => {}
    });

重点来了如果按照上面那样配置是不生效的,最后自己摸索改成下面这样才成功 对,没错,url不能带上http://xxxxxxxx

    uni.request({
      url: "/api/login",
      data:{},
      header: {},
      success: (res) => {}
    });

最后修改一下上面代码,根据环境变量来修改url,开发环境不加http://xxxxxxxx ,直接使用后面的接口名,正式环境则加上域名即可。

    uni.request({
      url: process.env.NODE_ENV === 'development' ? '/api/login' : 'https://baidu.com/api/login',
      data:{},
      header: {},
      success: (res) => {}
    });