微信JSSDK 突然出现invalid signature无效签名

     情况是这样的,自己负责开发的微信公众号一直有用微信的jssdk来获取用户的位置信息,本来好好的,可突然有一天发现出现了invalid signature无效签名的错误。心里那个郁闷,就开始想是不是谁改了获取jsApiTicket的算法和生成签名的算法,可是经过排查都没发现有修改过。纠结了好久,甚至怀疑是微信的问题,幻想着突然会没问题(太可笑了)。

    郁闷了好久,才发现原来是路径的问题,因为自己之前有遇到过invalid  URL的错误,所以就先入为主地认为路径问题就应该报invalid  URL ,坑爹啊。至于路径为什么会突然变了呢?

                        StringBuffer fullUrl=request.getRequestURL();  //请求路径
String queryString = request.getQueryString();  //查询参数
if(StringUtil.isNotEmpty(queryString)){
fullUrl.append("?");
fullUrl.append(queryString);

}            //这是我获取路径的代码,代码是一直没变的


   原来是nginx的配置变了,被改成了这样 

upstream weixind01 {
        #ip_hash;
        #server 127.0.0.1:8120 weight=5;         #tomcat2ַ[1;44r
        server 127.0.0.1:8130 weight=5;         #tomcat3ĵͶ˿[1;44r
        server 127.0.0.1:8140 weight=5;         #tomcat4ַ[1;44r
    }


那么StringBuffer fullUrl=request.getRequestURL();   获得 就是  http://weixind01/******       ,但是服务器的域名是weixind01.bppc.com.cn ,故此真实的请求路径是 http://weixind01.bppc.com.cn/******  ,因此真实的请求路径与拿去生成签名的路径是不对的,就出现了invalid signature错误。


解决办法  :只需要把nginx的配置改成  upstream weixind01.bppc.com.cn {
        #ip_hash;
        #server 127.0.0.1:8120 weight=5;         #tomcat2ַ[1;44r
        server 127.0.0.1:8130 weight=5;         #tomcat3ĵͶ˿[1;44r
        server 127.0.0.1:8140 weight=5;         #tomcat4ַ[1;44r
    }


总结 :不能先入为主,一定要认真排查每个可能存在问题的原因,还有同事间要多交流,不然真的坑惨了。


你可能感兴趣的:(java)