uniapp踩坑:编译H5解决浏览器跨域问题

288 阅读1分钟

使用若依系统的模板搭建一套自己的系统,再编译H5时一直提示跨域问题,真的很头疼,各种查资料找,网上说的最多的就是在manifest.json中修改配置文件,按照查出来的方法改了,编译后发现根本没起作用 第一种方法:修改manifest.json配置文件

"h5" : {
        "template" : "static/index.html",
        "devServer" : {
            "port" : 9090,
            "https" : false,
			"proxy": {
				"/dev-api": {
					"target": "http://192.168.66.8:8080",
					"pathRewrite": {
						"^/dev-api": "/"
					}
				}
			}
        },
        }

第二种方法:添加vue.config.js文件配置文件 有说新建一个vue.config.js文件配置跨域,也试了,还是不行 vue.config.js文件内容:

module.exports = {
  devServer: {
    proxy: {
      '/dev-api': {
        target: 'http://192.168.66.8:8080',
        pathRewrite: {
          '^/dev-api': ''
        }
      }
    },
  }
}

就很郁闷,到底是哪里出了问题,后来发现,使用第一种方法修改就已经可以,只不过需要两步走,第一种方法修改了manifest.json文件后还需要第二步,在config.js文件中把全局设置的baseUrl域名修改一下 就是接口请求的时候,域名要改为/dev-api,不能是正式域名,因为pathReweite已经帮你转了 在config.js中修改为

baseUrl = process.env.NODE_ENV === 'development' ? '/dev-api' : 'http://www.test.com'
然后uni.request请求的url应该是这样:baseUrl + '/login'

然后浏览器看到的请求地址应该是 http://localhost:9090/login 通过这两步走编译H5后就可以完成跨域请求了。

另外后来验证第二种方法也是可以的,uniapp会识别这个vue.config.js文件,不过manifest.json的优先级要高于vue.config.js文件,我配置的时候文件没有搞对。

记录一次uniapp踩坑

非常感谢大神分享:www.jianshu.com/p/d76e98147…