微信 js sdk 校验签名成功 但手机上依然会报 签名错误 的原因-欧洲杯买球app

0411-39943997
工作时间:周一至周日 8:30-16:30
技术文库
technical library
微信 js sdk 校验签名成功 但手机上依然会报 签名错误 的原因
标签: 微信 js sdk 校验签名成功 签名错误  访问: 8212017-09-08

相信许多的朋友做开发的过程中会遇到这样的问题,用微信官方提供的工具校验签名:(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign)成功。但是在手机端一直报 invalid signature 签名错误。这不是很矛盾吗?官方工具都说正确了,然后你还给我报这个签名错了!!!网上找了好多的答案,一定是我理解能力低下,一直没明白。但他的提到最多的是参与生成签名的 url 存在问题。而我一直在怀疑在点击 分享的时候微信会在当前的url上加上什么参数。因为微信官方一直强调要动态获取。可是经过一段时间的测试,发现并没有加上什么参数。那为什么呢,直到我最后在官方的工具页面发现了这句话:


6631465788909153210.png
我的测试网址为:http://abc.xxxxxxxxxx.com   在地址栏也是这样显示的。但是实际上我后台用了 request.url.tostring().split('#')[0];   结果是:http://abc.xxxxxxxxxx.com/default.aspx我根据官方的说法,试着将url 写死一次试试:http://abc.xxxxxxxxxx.com/结果通过了。我这下才真正的明白,参与生成签名的url的真面目了,是获取地址栏的url。那为什么要动态获取吗?原因是当你把要分享的页面分享出去的时候,微信会在地址栏上加上一些参数。如果写死,当朋友点击你分享的链接时也想分享的话,这时又会出现签名错误了。请注意,这里所说的加上了参数,发生的时间点。

总结:
在.net 中没有直接获取地址栏信息的方法。
   request.applicationpath:                                 /testweb   
   request.currentexecutionfilepath:               /testweb/default.aspx   
   request.filepath:                                               /testweb/default.aspx   
   request.path:                                                       /testweb/default.aspx   
   request.rawurl:                                                   /testweb/default.aspx   
   request.url.absolutepath:                               /testweb/default.aspx   
   request.url.absoluteurl:                                 http://www.test.com/testweb/default.aspx   
   request.url.host:                                               www.test.com   
   request.url.localpath:                                     /testweb/default.aspx  

如果你的网址是:   http://abc.xxxxxxxxxx.com/
分享后的地址:http://abc.xxxxxxxxxx.com/

我的处理方法是这样的,有点笨,但好用:

            url = request.url.tostring().split('#')[0];
            if (url == "http://abc.xxxxxxxxxx.com/default.aspx")
            {
                url = "http://abc.xxxxxxxxxx.com/";
            }
            else
            {
                url = url.replace("default.aspx", "");
            }


欧洲杯手机投注 copyright© 2015 仟亿科技,all rights reserved.
网站地图