config:fail,invalid signature

微信开发调用JS-SDK某些页面报config:fail,invalid signature

注意,是某些页面才会报这个错误,导致 wx.config 失败

百思不得解

看了几遍文档

确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分

后来想了下,我用了nginx 代理,可能是代理设置的不对,然后打开了调试模式

查看参数,果然是有问题的,发现 动态获取url的时候,将我的项目名带上了,实际上,我用了nginx是忽略了这个项目名

出现这种情况,多看下实际访问地址

动态获取URL 代码如下

    public static String getHttpValue(HttpServletRequest request) {
        String url = "http://" + request.getServerName() //服务器地址
                + request.getContextPath()      //项目名称
                + request.getServletPath()      //请求页面或其他地址
                + (request.getQueryString() == null ? "" : "?" + request.getQueryString()); //参数
        return url;
    }

附录1,Ajax 获取微信js-sdk配置

附录2 java 后台获取微信js-sdk参数

 /**
     * 前端获取url签名
     *
     * @throws WxErrorException
     */
    @RequestMapping("/getJsapiSignature")
    @ResponseBody
    public Map getJsapiSignature(
            HttpServletRequest request,String url)
            throws RuntimeException, WxErrorException {
        logger.info("请求wxJsapiSignature的url为:{}",url);
        WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url);
        Map map = new HashMap();
        map.put("wxConfig", wxJsapiSignature);

        return map;
    }

wxMpService 为 班纳睿 的   weixin-java-tools 


你可能感兴趣的:(微信开发,java,WEB)