uniapp跨域问题?

                uni.request({
                    url: '/wzry/mini/hero/getHeroList.php',
                    // url: 'https://www.somekey.cn/mini/hero/getHeroList.php',
                });

写成第一个url,然后在配置一下devServer,在浏览器的手机端可以访问,但是在微信开发者工具中不可使用,

写成第二个url在微信开发者工具中可以使用,但是在浏览器会出现跨域问题

这种应该怎么解决啊?

阅读 2.7k
2 个回答

因为微信开发者工具和浏览器的跨域策略不同导致的。微信开发者工具内置了一个代理服务器,可以避免跨域问题,而浏览器则需要自己设置跨域策略。

你可以配置 devServer 来转发请求到第二个 URL,好在浏览器中使用

devServer: {
  proxy: {
// .....
  },
},

或者判断平台, 用不同方法进行跳转:

switch(uni.getSystemInfoSync().platform){
    case 'android':
       console.log('运行Android上')
       break;
    case 'ios':
       console.log('运行iOS上')
       break;
    default:
       console.log('运行在开发者工具上')
       break;
}

或者:

// #ifdef H5
    alert("只有h5平台才有alert方法")
    window.open()
// #endif
// 如上代码只会编译到H5的发行包里,其他平台的包不会包含如上代码。

判断是微信开发者工具访问还是普通浏览器访问

isWeiXin() {
    const ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == 'micromessenger') {
        return true; // 微信中打开
    } else {
        return false; // 普通浏览器中打开
    }
}

然后使用不同的地址访问

const url = isWeiXin ? 'https://www.somekey.cn/mini/hero/getHeroList.php' : '/wzry/mini/hero/getHeroList.php'
uni.request({url});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题