uniapp是一个可以开发多端的框架,在小程序、APP端只要配置好合法域名就能够请求,没有跨域的情况,但在H5上不同,会出现跨域问题。
先了解一下跨域:
跨域:端口、域名、协议,一者不同即为跨域
解决方法
1. 使用HBuilder X 内置浏览器
这个内置浏览器经过官方处理,不存在跨域问题,简单易用,推荐使用。(需HBuilderX 2.6以上)
但是,你不能让用户也使用这个吧?
2. 在一个服务器上
代码+资源都在一个服务器上,这样一般不会出现跨域问题,但这种也只能是第一种方法的补救
3. 服务器端开启跨域
这是最有效的方法,但是如果别人不给你开呢?或者是你访问的是别人的资源呢?
4. proxy代理
详细的说一下这个的用法,一劳永逸
"h5": {
"router": {
"base": "/H5/",
"mode": "hash"
},
"devServer": {
"proxy": {
"/api": {
"target": "https://www.ucharts.cn",
"pathRewrite": {// "pathRewrite"是必要的,不然读取不到数据
"^/api": "/"
}
}
}
}
},
接口这里这么写
uni.request({
url: '/api/data.json',//这里的api是上面配置的时写的名称
//https://www.ucharts.cn/data.json 这是原来的地址
data:{
},
success: function(res) {
},
fail: () => {
},
});
以后写一篇详细的proxy介绍