新建一个默认的小程序,使用真实的AppID,在app.js的wx.login中添加向后台请求的代码,报告401 Unauthorized错误。代码如下图:
程序运行输出结果如下图:
To 风淡云轻:
现在的情况是这样的:
1、浏览器里面输入服务接口,能正常返回了。无论内网、还是外网,甚至手机上,都可以的。如下图:
2、小程序开发工具中,调用服务接口,还是报告错误。根据你的提示,分别用json和string传参数,报告的错误不一样:json时报告401错误,string时报告500错误。分别如下图:
图一:json
图二:string
昨天找错误原因时,发现443端口没开。开了后还是不同,后来同事修改了服务器系统的temp文件夹的权限,增加了IIS-User用户的写入权限,在浏览器中直接输入服务接口就通了,就变成上面的情况了。
我估计,是不是域名的权限设置、或者服务器的权限设置有问题。
PS:目前的服务器是虚拟机上运行的。
麻烦风淡云轻及各位再帮给看看,项目要验收了,心里真着急啊。
有application/string这个说法吗?换x-www-form-urlencoded试试:比如这个是我在项目中用的,后台thinkphp框架,亲测是能用的,你可以参照着改改用用看
var requestUrl = function (option, cb) { option = option || {} option.url = url + option.action option.data = option.json ? { wx_param: JSON.stringify(option.param) } : option.param, option.method = option.method || 'POST' option.navigationLoading = option.navigationLoading === false ? false : true option.header = option.header || {} if (!option.header[ 'content-type' ]) { option.header[ 'content-type' ] = 'application/x-www-form-urlencoded' } option.header[ 'X-Requested-With' ] = 'XMLHttpRequest' option.dataType = option.dataType || 'json' var session = wx.getStorageSync( 'session' ); var ts = Date.parse( new Date) / 1000 if (session && session.id && session.expire > ts) { option.header.Cookie = 'PHPSESSID=' + session.id } else { if (option.action != 'User/login' ) { !option.navigationLoading && wx.showNavigationBarLoading() _login(ssid => { option.header.Cookie = 'PHPSESSID=' + ssid option.complete = function (rlt2){ !option.navigationLoading && wx.hideNavigationBarLoading() if (!_showErr(rlt2.data)) { cb && cb(rlt2.data) } } wx.request(option) }) return } } !option.navigationLoading && wx.showNavigationBarLoading() option.complete = function (rlt2) { !option.navigationLoading && wx.hideNavigationBarLoading() if (rlt2.data.status == -200) { _login(ssid=>{ option.header.Cookie = 'PHPSESSID=' + ssid option.complete = function (rlt3) { !option.navigationLoading && wx.hideNavigationBarLoading() if (!_showErr(rlt3.data)) { cb && cb(rlt3.data) } } wx.request(option) }) } else { if (!_showErr(rlt2.data)) { cb && cb(rlt2.data) } } } wx.request(option) } |