国产高清吃奶成免费视频网站_jizzzzxxxxx_欧美天天在线_最新色视频

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

微信 JS SDK 校驗簽名成功 但手機上依然會報 簽名錯誤 的原因

標(biāo)簽: 微信 JS SDK 校驗簽名成功 簽名錯誤   訪問: 16412017-09-08

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


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

總結(jié):
在.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  

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

我的處理方法是這樣的,有點笨,但好用:

            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.