微信Web開發之config:invalid signature


config:invalid signature可以按以下方法排查

    1. JS接口安全域名設置問題:應該只包含域名,比如https://i.cnblogs.com 的域名是i.cnblogs.com

    2. wx.config配置參數相關的要求
      1. 時間戳(timestamp)值精確到秒,不是毫秒
      2. nonceStr字段名稱的's'是大寫。
      3. appid 與獲取 jsapi_ticket 使用的appid 必須相同
      4. 進行簽名(加密)的URL
        1. 對於加密的URL,包括https://或http://和?后面包括的參數,不能包括#之后的內容。
          比如:
          加密的URL是:http://abc.com/a.html?adasd=1#localion
          那么正確的加密URL應該是:http://abc.com/a.html?adasd=1
        2. 前端發送到后端進行sha1加密的url是當前js頁面的URL,不是獲取驗證簽名的接口URL
          比如: 
          當前頁面URL是   http://abc.com/a.html 
          獲取appId、timestamp、nonceStr、signature的URL接口是   http://abc.com/aaa/getSignature.html
          那么進行加密的URL應該是 http://abc.com/a.html 
        3. 后端獲取用來加密的URL要動態獲取。
    3. 需要緩存access_token和jsapi_ticket,不然可能因為每次獲取時刷新了不同的值,導致驗證失敗。
    4. 用戶授權回調之后,頁面路徑會添加兩個參數:code和state
      比如:

      授權后跳轉頁面為:http://abc.com
      則添加參數后會變成:

      http://abc.com?code=asdasd&state=STATE

      如果直接使用location.href.split('#')[0]獲取當前頁面的URL,會把state當成一個查詢的參數導致錯誤
      正確的獲取簽名URL:encodeURIComponent(location.href.split('#')[0])
    5. 簽名算法出現錯誤:
      使用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具校驗
    6. 服務器ip沒有在白名單上
      公眾號后台->基本配置->設置IP白名單
    7. 超過了每日的access_token獲取上限,token過期后簽名失敗
    8. 反向代理沒有設置正確
      nginx配置反向代理代碼:
      proxy_set_header Host $http_host;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM