实际上,在开发微信应用的过程中,转发给朋友和分享到朋友圈,经常发生签名验证失败的问题。
签名验证失败,大部分是url不符合造成的。
比如 http://www.hisn.cn/index.php?d-12=&from=tamp
这样的链接。
在后台的时候,用 $url =’http://’. $_SERVER[‘HTTP_POST’].$_SERVER[‘REQUEST_URI’];
一般都是上面的那样的链接。
但是因为微信取值,用的是 location.href.split('#')[0] 这样的。
而window.location.href 这样取值,有时会带有 index.php 而有时又不带有 index.php,这就导致在做微信签名的时候,前后链接不统一的问题,导致签名验证失败。
所以要在前台调用微信jssdk之前对location.href进行处理,我是这样做的:
var locationUrl = window.location.href;
if(locationUrl.indexOf('index.php')==-1){
window.location.href = 'http://www.hisn.cn/index.php'+window.location.search;
}
这样,假如前端js获取链接的时候不带有index.php的时候,就自动调转到带有的链接上,就OK了。
就保证,分享二次转发等,顺利转发!!