微擎:小程序上传图片重定向问题

调用wx.uploadFile总是返回如下代码

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
    </head>
    <body>
        <script type="text/javascript">
            var ua = navigator.userAgent.toLowerCase();
            var isWeixin = ua.indexOf('micromessenger') != -1;
            var isAndroid = ua.indexOf('android') != -1;
            var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);
            if (!isWeixin) {
                document.head.innerHTML = '<title>抱歉,出错了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">';
                document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">请在微信客户端打开链接</h4></div></div>';
            }
        </script>
    </body>
</html>

百思不得其解,上网查询也是无果,没有办法只能看下HTTP请求包。

微信截图_20190523173447.png可以看到被302重定向了,后端上传代码里并没有重定向操作,所以查看了下标识,发现MicroMessenger。猜测应该是被微擎重定向了。

微擎源代码里有这么一段:

// 检查是否在微信中打开
public static function isMicroMessage($agent = '')
{
    $agent = self::getAgent($agent);
    if (stripos($agent, 'MicroMessenger') !== false) {
        return self::MICRO_MESSAGE_YES;
    } else {
    return self::MICRO_MESSAGE_NOT;
    }
}

会检查你的agent,如果包含MicroMessenger则会当成是在微信中打开。然后调用getOauthCodeUrl|getOauthCodeUrl去获取你的微信信息。所以会造成重定向。

修改微信开发者工具,将请求头改掉

333.png然后上传成功

微信截图_20190523173600.png

真实的环境下,一般会存在第三方存储服务商,所以不会发生这种情况。如果你要在微擎里改掉授权操作,那么很有可能出现一系列问题,所以还是建议在微擎外写一个上传接口。


微擎:小程序上传图片重定向问题


本站如无特别说明即为原创,转而告知:(https://iwonmo.com/archives/1559.html)

标签: 微信小程序上传图片, uploadFile

添加新评论