小程序
小游戏
企业微信
微信支付
扫描小程序码分享
新建一个默认的小程序,使用真实的AppID,在app.js的wx.login中添加向后台请求的代码,报告401 Unauthorized错误。代码如下图:
程序运行输出结果如下图:
27 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
遇到同样的问题 求解决的办法
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
谢谢 风淡云清! ,已解决这个问题,是我接口的问题。
薛磊啊! 时间老长了,我都快忘了,刚又从头捋了一遍,什么意思你再说说,什么环境,后台什么框架!
各位大神!如果是这个错误呢?
下面这个data打开是这样的
再有,你的iis的安全配置要允许匿名登录
有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
?
:
true
option.header = option.header || {}
if
(!option.header[
'content-type'
]) {
option.header[
] =
'application/x-www-form-urlencoded'
}
'X-Requested-With'
'XMLHttpRequest'
option.dataType = option.dataType ||
'json'
session = wx.getStorageSync(
'session'
);
ts = Date.parse(
new
Date) / 1000
(session && session.id && session.expire > ts) {
option.header.Cookie =
'PHPSESSID='
+ session.id
else
{
(option.action !=
'User/login'
) {
!option.navigationLoading && wx.showNavigationBarLoading()
_login(ssid => {
+ ssid
option.complete =
(rlt2){
!option.navigationLoading && wx.hideNavigationBarLoading()
(!_showErr(rlt2.data)) {
cb && cb(rlt2.data)
wx.request(option)
})
return
(rlt2) {
(rlt2.data.status == -200) {
_login(ssid=>{
(rlt3) {
(!_showErr(rlt3.data)) {
cb && cb(rlt3.data)
To 风淡云轻:
现在的情况是这样的:
1、浏览器里面输入服务接口,能正常返回了。无论内网、还是外网,甚至手机上,都可以的。如下图:
2、小程序开发工具中,调用服务接口,还是报告错误。根据你的提示,分别用json和string传参数,报告的错误不一样:json时报告401错误,string时报告500错误。分别如下图:
图一:json
图二:string
昨天找错误原因时,发现443端口没开。开了后还是不同,后来同事修改了服务器系统的temp文件夹的权限,增加了IIS-User用户的写入权限,在浏览器中直接输入服务接口就通了,就变成上面的情况了。
我估计,是不是域名的权限设置、或者服务器的权限设置有问题。
PS:目前的服务器是虚拟机上运行的。
麻烦风淡云轻及各位再帮给看看,项目要验收了,心里真着急啊。
大神,想问一下你所详述的这个问题后来是怎么解决的?目前遇到的情况和你详述的几乎一致。
还有一点,在php环境中,content-type为json的情况下,后台服务器根本无法拿到param的参数,asp不知道有没有这样的问题,所以你的login先不要改动,看看能不能得到目前浏览器里一样的输出
现在在开发工具里再访问一次看看,记得截个图
19楼:
你说的是什么意思?我没有直接访问443端口呀?
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
遇到同样的问题 求解决的办法
谢谢 风淡云清! ,已解决这个问题,是我接口的问题。
薛磊啊! 时间老长了,我都快忘了,刚又从头捋了一遍,什么意思你再说说,什么环境,后台什么框架!
各位大神!如果是这个错误呢?
下面这个data打开是这样的
再有,你的iis的安全配置要允许匿名登录
有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)
}
To 风淡云轻:
现在的情况是这样的:
1、浏览器里面输入服务接口,能正常返回了。无论内网、还是外网,甚至手机上,都可以的。如下图:
2、小程序开发工具中,调用服务接口,还是报告错误。根据你的提示,分别用json和string传参数,报告的错误不一样:json时报告401错误,string时报告500错误。分别如下图:
图一:json
图二:string
昨天找错误原因时,发现443端口没开。开了后还是不同,后来同事修改了服务器系统的temp文件夹的权限,增加了IIS-User用户的写入权限,在浏览器中直接输入服务接口就通了,就变成上面的情况了。
我估计,是不是域名的权限设置、或者服务器的权限设置有问题。
PS:目前的服务器是虚拟机上运行的。
麻烦风淡云轻及各位再帮给看看,项目要验收了,心里真着急啊。
大神,想问一下你所详述的这个问题后来是怎么解决的?目前遇到的情况和你详述的几乎一致。
还有一点,在php环境中,content-type为json的情况下,后台服务器根本无法拿到param的参数,asp不知道有没有这样的问题,所以你的login先不要改动,看看能不能得到目前浏览器里一样的输出
现在在开发工具里再访问一次看看,记得截个图
19楼:
你说的是什么意思?我没有直接访问443端口呀?