微信网络请求的限制
出于安全性考虑,小程序官方对数据接口的请求做出以下限制
- 只能请求HTTPS类型接口
- 必须将接口的域名添加到信任列表中
配置request
修改request的域名需要注意的点
需求: 假设在自己的小程序中,需要请求https://www.baidu.com/域名下的接口
步骤
- 登录微信小程序管理后台
- 开发
- 开发设置
- 服务器域名
- 修改request合法域名
注意事项:
- 域名只支持
https (request/uploadFile/downloadFile) /wss(connectSocket)协议)- 域名不能使用
IP地址或localhost- 域名必须经过
ICP备案- 服务器域名一个月内可申请5次修改
发起GET请求
调用微信小程序提供的wx.request()方法,可以发起GET数据请求:
wx.request({
url: 'https://www.xxx.com', // 请求的接口地址,必须基于https协议
methods: 'GET', // 请求的方式
data: {
// 发送到后台的数据
name: 'jackson',
age: 22
},
success: res => {
// 请求成功后的回调函数
console.log(res)
}
})
发起POST请求
wx.request({
url: 'https://www.xxx.com', // 请求的接口地址,必须基于https协议
methods: 'POST', // 请求的方式
data: {
// 发送到后台的数据
name: 'jackson',
gender: '男'
},
success: res => {
// 请求成功后的回调函数
console.log(res)
}
})
在页面刚加载时候请求数据
在onLoad事件中调用获取数据的函数
/**
* 生命周期函数——监听页面加载
*/
onLoad: function(options) {
this.getSwiperList()
this.getGridList()
},
// 获取轮播图数据
getSwiperList() {...
},
// 获取九宫格的数据
getGridList() {...
}
跳过request合法域名的检测
如果后端只提供了http协议接口,暂时未提供https协议接口,此时可以临时开启[开发环境不校验请求域名、TLS 版本及 HTTPS 证书」选项,跳过服务器域名校验。此时在微信开发者工具和手机开始调试模式时,不会进行服务器域名的校验。
注意:在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。
跨域和AJAX
-
跨域问题只存在于基于浏览器的
Web开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域问题 -
AJAX技术的核心是依赖于浏览器中的XMLHttpRequest这个对象,由于小程序宿主环境是微信客户端,所以小程序中不能叫做发起 AJAX 请求,而是叫做发起网络数据请求