美人诱受多汁水肉np_医生性艳史在线观看_中文一区二区视频_成人国产精品免费视频

0411-39943997
工作時(shí)間:周一至周日 8:30-17:30
技術(shù)文庫(kù)
Technical Library

微信 JS SDK 校驗(yàn)簽名成功 但手機(jī)上依然會(huì)報(bào) 簽名錯(cuò)誤 的原因

標(biāo)簽: 微信 JS SDK 校驗(yàn)簽名成功 簽名錯(cuò)誤   訪問(wèn): 16422017-09-08

相信許多的朋友做開(kāi)發(fā)的過(guò)程中會(huì)遇到這樣的問(wèn)題,用微信官方提供的工具校驗(yàn)簽名:(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign)成功。但是在手機(jī)端一直報(bào) invalid signature 簽名錯(cuò)誤。這不是很矛盾嗎?官方工具都說(shuō)正確了,然后你還給我報(bào)這個(gè)簽名錯(cuò)了!!!網(wǎng)上找了好多的答案,一定是我理解能力低下,一直沒(méi)明白。但他的提到最多的是參與生成簽名的 URL 存在問(wèn)題。而我一直在懷疑在點(diǎn)擊 分享的時(shí)候微信會(huì)在當(dāng)前的URL上加上什么參數(shù)。因?yàn)槲⑿殴俜揭恢睆?qiáng)調(diào)要?jiǎng)討B(tài)獲取。可是經(jīng)過(guò)一段時(shí)間的測(cè)試,發(fā)現(xiàn)并沒(méi)有加上什么參數(shù)。那為什么呢,直到我最后在官方的工具頁(yè)面發(fā)現(xiàn)了這句話:


6631465788909153210.png
我的測(cè)試網(wǎng)址為:http://abc.xxxxxxxxxx.com   在地址欄也是這樣顯示的。但是實(shí)際上我后臺(tái)用了 Request.Url.ToString().Split('#')[0];   結(jié)果是:http://abc.xxxxxxxxxx.com/default.aspx我根據(jù)官方的說(shuō)法,試著將URL 寫(xiě)死一次試試:http://abc.xxxxxxxxxx.com/結(jié)果通過(guò)了。我這下才真正的明白,參與生成簽名的URL的真面目了,是獲取地址欄的URL。那為什么要?jiǎng)討B(tài)獲取嗎?原因是當(dāng)你把要分享的頁(yè)面分享出去的時(shí)候,微信會(huì)在地址欄上加上一些參數(shù)。如果寫(xiě)死,當(dāng)朋友點(diǎn)擊你分享的鏈接時(shí)也想分享的話,這時(shí)又會(huì)出現(xiàn)簽名錯(cuò)誤了。請(qǐng)注意,這里所說(shuō)的加上了參數(shù),發(fā)生的時(shí)間點(diǎn)。

總結(jié):
在.net 中沒(méi)有直接獲取地址欄信息的方法。
   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  

如果你的網(wǎng)址是:   http://abc.xxxxxxxxxx.com/
分享后的地址:http://abc.xxxxxxxxxx.com/?from=singlemessage&isappinstalled=0

我的處理方法是這樣的,有點(diǎn)笨,但好用:

            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? 2020 仟億科技,All rights reserved.