在微信小程序中,由于安全管制,命令非当前域下的数据时会发生跨域命令的问题。化解这个问题就是很关键的,因为很多应用领域须要联手数据去顺利完成任务,并且在微信小程序中同时实现项目时须要采用至许多的API。
本文将从以下几个方面去了解微信小程序中如何处置跨域命令:
1. 什么就是跨域命令?
2. 微信小程序中USB跨域的管制
3. 微信小程序中跨域命令的解决方案
4. 移动应用领域中的跨域问题
5. 跨域命令的安全性问题
1. 什么就是跨域命令?
跨域命令就是指须要在相同的域、协议和端口下命令资源的过程。比如,在 A 域名下发动的命令必须回去出访 B 域名下的资源。由于跨域命令存有安全风险,因此浏览器在预设情况下就是严禁展开跨域命令的。
2. 微信小程序中USB跨域的管制
在微信小程序中,当我们采用wx.request()USB命令数据时,系统可以自动采用小程序域名做为命令的源。由于微信小程序预设打开了严苛模式,管制了所有的第三方URL命令,否则可以发生HTTP Status Code 401错误。
以微信公众号10000的USB为基准,我们可以辨认出在小程序控制台下,该USB发生了相似以下提示信息:
[微信号] oauth USB被婉拒出访,因为暂时无法检验公众号身份,恳请稍后再试。
3. 微信小程序中跨域命令的解决方案
为了化解微信小程序中的跨域命令问题,我们可以使用以下方法:
方法一:采用wx.request()中的header属性
我们可以在采用wx.request()时,对该命令展开布局。此时可以利用其header属性去对跨域命令展开处置。我们可以采用header属性向服务器传递信息,说服务器当前命令的源就是一个源自小程序的命令,如下右图:
```
wx.request({
url: 'https://example.com',
header: {
'content-type': 'application / json',
'Authorization': 'Bearer' + wx.getStorageSync('token')
},
success: function (res) {
console.log(res.data)
},
fail: function (res) {
console.log('命令失利')
}
})
```
方法二:采用小程序后台的安全域名
微信小程序后台积极支持布局安全域名,我们可以在小程序后台-研发-研发设置中展开布局。通过布局安全域名,小程序可以安全地出访外部的USB。
当小程序出访布局了安全域名的外部USB时,系统可以根据该域名的TLS证书展开检验,保证该USB就是安全且可以被信任的。
比如,我们可以在小程序设置中设置百度云开放平台为安全域名,如下右图:
在小程序中采用如下代码展开调用:
```
wx.request({
url: 'https://example.com',
success: function (res) {
console.log(res.data)
},
fail: function (res) {
console.log('命令失利')
}
})
```
方法三:采用代理服务器
当以上两种方法都无法化解跨域命令的问题时,我们可以采用代理服务器去替代小程序向被命令的资源发出请求。代理服务器可以将小程序中的命令发送到目标URL资源,并赢得该资源的积极响应结果,再将结果回到至小程序中。这种方式可以在服务端展开跨域命令处置,从而防止微信小程序中的跨域命令管制。
4. 移动应用领域中的跨域问题
当相同域下的移动应用领域命令资源时,也可以牵涉至跨域问题。无论是采用Android应用领域程序开发还是iOS应用领域程序开发,我们都会碰到横跨问题。
在Android应用程序中,我们可以通过Cross Domain Solutions/JsonP等方式去化解命令相同域的资源问题。JsonP坚信大家都比较熟识,这里不再可知。
而在iOS应用程序中,我们可以通过采用桥接去化解命令相同域的资源问题。桥接将OC的NSURLConnection和JavaScript的XMLHttpRequest融合出来顺利完成命令相同域的资源。
5. 跨域命令的安全性问题
跨域命令在保证资源安全性方面存有非常大的问题。假设某一网站存有漏洞,那么当被蓄意攻击者借由该网站发动跨域命令时,其蓄意脚本可能会被转化成至接收端的命令中,从而引致接收端频频异常,甚至遭遇数据泄漏或版权侵害等风险。
因此,我们须要在跨域命令时展开有效率的安全检查和掌控,比如说在微信小程序传送命令时采用token展开证书,只容许许可用户展开出访。同时不所推荐将敏感数据放到浏览器端的,特别是在跨域的时候,以免数据泄漏。
总结
通过以上了解,我们已经了解到微信小程序中如何处置跨域命令的问题。因为微信小程序的安全机制,我们须要使用一些方法去展开跨域命令的处置,包含采用header属性、布局安全域名和采用代理服务器等方法。同时,我们也须要展开一些安全性方面的处置,以保证跨域命令的安全。对于移动应用程序的跨域命令问题,我们也可以使用跟微信小程序相似的处理方式去同时实现。