码迷,mamicode.com
首页 > 微信 > 详细

微信Web开发之config:invalid signature

时间:2019-08-02 13:14:02      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:字段   缓存   设置   添加   timestamp   每日   sha   tps   ken   

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;

微信Web开发之config:invalid signature

标签:字段   缓存   设置   添加   timestamp   每日   sha   tps   ken   

原文地址:https://www.cnblogs.com/Rookie-Programmer/p/11287775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!