config:fail,invalid signature

2023-10-27

微信开发调用JS-SDK某些页面报config:fail,invalid signature

注意,是某些页面才会报这个错误,导致 wx.config 失败

百思不得解

看了几遍文档

确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分

后来想了下,我用了nginx 代理,可能是代理设置的不对,然后打开了调试模式

查看参数,果然是有问题的,发现 动态获取url的时候,将我的项目名带上了,实际上,我用了nginx是忽略了这个项目名

出现这种情况,多看下实际访问地址

动态获取URL 代码如下

    public static String getHttpValue(HttpServletRequest request) {
        String url = "http://" + request.getServerName() //服务器地址
                + request.getContextPath()      //项目名称
                + request.getServletPath()      //请求页面或其他地址
                + (request.getQueryString() == null ? "" : "?" + request.getQueryString()); //参数
        return url;
    }

附录1,Ajax 获取微信js-sdk配置

<script type="text/javascript">
        var data = {
            url: location.href
        };
        $.ajax({
            url: $.httpRootPath()+'share/getJsapiSignature',
            type: 'GET',
			data:data,
            dataType: 'json',
            timeout: 15000,
            success: function (r) {
                r = r.wxConfig;
                $(".loading").hide();
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: r.appId, // 必填,公众号的唯一标识
                    timestamp: r.timestamp, // 必填,生成签名的时间戳
                    nonceStr: r.nonceStr, // 必填,生成签名的随机串
                    signature: r.signature, //必填,签名,见附录1
                    jsApiList: ['checkJsApi',
                        'onMenuShareTimeline',
                        'onMenuShareAppMessage'
                    ]
                    // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
                wx.ready(function(){
                    console.log("errorToast(\"获取分享参数完成\",1);");
                    wx.onMenuShareAppMessage({
                        title: '电话群录微信公众号-轻松找到那个她', // 分享标题
                        desc: '电话群录,致力于团体之间成员的通讯信息的在线管理、查找、分享,可选择使用学号、邮箱、手机号码登录', // 分享描述
                        link: $.httpRootPath() + 'share/introduce', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                        imgUrl: 'http://sta.haois.me/common/img/3.jpg', // 分享图标
                        type: 'link', // 分享类型,music、video或link,不填默认为link
                        success: function () {
                            // 用户确认分享后执行的回调函数
                            console.log("用户分享")
                        },
                        cancel: function () {
                            // 用户取消分享后执行的回调函数
                            console.log("用户取消分享")
                        }
                    });
                    wx.onMenuShareTimeline({
                        title: '电话群录微信公众号-轻松找到那个她', // 分享标题
                        link: $.httpRootPath() + 'share/introduce',// 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                        imgUrl: 'http://sta.haois.me/common/img/3.jpg', // 分享图标
                        success: function () {
                            // 用户确认分享后执行的回调函数
                        },
                    });
                });
            },
            error: function (e) {
                $(".loading").hide();
                ajaxErrorEvent(e);
            }
        });
	</script>

附录2 java 后台获取微信js-sdk参数

 /**
     * 前端获取url签名
     *
     * @throws WxErrorException
     */
    @RequestMapping("/getJsapiSignature")
    @ResponseBody
    public Map getJsapiSignature(
            HttpServletRequest request,String url)
            throws RuntimeException, WxErrorException {
        logger.info("请求wxJsapiSignature的url为:{}",url);
        WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url);
        Map map = new HashMap();
        map.put("wxConfig", wxJsapiSignature);

        return map;
    }

wxMpService 为 班纳睿 的   weixin-java-tools 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

config:fail,invalid signature 的相关文章

  • intellij idea vue js 报ESLint: Expected indentation of 0 spaces but found 2. (indent)错误解决方法

    ESLint这东西是真的烦 把人当做机器来验证 没办法 遇到他了 死磕 就因为script后面的内容被idea格式化之后空了两格 这就不得了了 你一个警告 总是搞一个error的标志 难道不知道程序员最忌讳的就是打断吗 你要求严格 也不能这
  • oracle数据库中varchar类型字段中存放的有数字和汉字情况,比较大小问题解决

    如果你也正在为这种问题头疼 当你看到我这篇博客时 恭喜你 问题的解决方案来了 你头疼的问题可以解决了 这个问题是我在最近的项目中遇到的难题 上网查阅了很多资料 用什么平常使用的 lt lt gt gt 都没能解决问题 最后还是问了大牛 才解
  • 玩一玩微信公众号开发(一) 接入系统

    一开始我准备学一学微信开发 后来看了一下文档 需要自己搭服务器进行接口对调 有点麻烦所以就没继续学下去 现在学习过了Kotlin Spring Boot很多东西 感觉可以比较方便的进行开发了 今天就来回过头学习一下 准备工作 申请公众号 首
  • 我眼中的全栈工程师

    前言 全栈工程师 一直以来都是软件行业热议的话题 只要提到全栈工程师大家就觉得很高大上 当然也有人直接说万金油而已 往好听说是全栈工程师 综合能力全 但是实际上就是什么都会哪都不精通 有人唾之以鼻 也有人称赞不已 对于许多创业公司来讲 全栈
  • 软件工程毕业设计题目合集【含源码+论文】

    文章目录 前言 题目1 基于SSM的房屋出租出售系统 br 题目2 基于SSM的房屋租赁系统 br 题目3 基于SSM的个人健康信息管理系统 br 题目4 基于SSM的共享充电宝管理系统 br 题目5 基于SSM的即动运动网站 br 前言
  • Java编写的美食网站 美食系统 功能齐全、界面漂亮 下载即可以运行

    8月份由于公司的事情太多 基本上没有更新博客信息 今天稍微空了点 继续为为大家介绍Java web项目 今天要介绍的是一个Java web编写的美食网站 美食系统 美食网站分两类用户 普通用户和系统管理员 普通用户具备的主要功能包括 登陆
  • 上传,下载 javaMail

    上传 1 上传对表单限制 method post enctype multipart form data 表单中需要添加文件表单项
  • 微信公众平台错误代码40164的解决方案

    获取微信公众号授权失败 请稍后重试 公众平台返回原始数据为 错误代码 40164 错误信息 invalid ip not in whitelist hint 59FKqA0797e514 错误解释 调用接口的IP地址不在白名单中 请在接口I
  • 计算机毕业设计选题推荐 40个高质量计算机毕设项目分享【源码+论文】(三)

    文章目录 前言 题目1 基于SSM的汽车租赁系统 br 题目2 基于SSM的在线药品超市购物系统 br 题目3 基于SSM的在线药品超市购物系统 br 题目4 基于SSM的疫情防控物业管理系统 br 题目5 基于SSM的在线音乐网站设计与实
  • 实例一 LINUX OS 简单制作 JAVA WEB + TOMCAT7.0 RPM 安装包

    1 安装rpmbuild 并配置环境 1 1 首先 你应该检查 rpmbuild 是否已经被安装在你的系统上 你将会利用这个工具从 spec 文件或 SRPM 组件创建 RPM 要检查它是否被安装了 请执行 rpmbuild showrc
  • Eclipse安装LomBok插件

    1 使用LomBok的好处在于实体类不用手动去生成set get方法了 类会在编译时自动生成 是代码简洁节省工作量 2 maven项目的pom文件添加坐标下载
  • 微信开发------微信公众号新老账户粉丝迁移问题

    一 迁移注意事项 I 账号迁移申请提交后原账号用户信息无法再通过接口获取 II 申请提交后 opneid装换接口最多保留15天 超过15天接口失效 无法继续装换openid III 装换的openid不应都能装换完成 只有关注旧公众号的用户
  • 公众号(服务号)模板消息(个人通知)开发方案

    公众号消息通知 微信公众号开发文档 公众号是以微信用户的一个联系人形式存在的 消息会话是公众号与用户交互的基础 目前公众号内主要有这样几类消息服务的类型 分别用于不同的场景 1 群发消息 公众号可以以一定频次 订阅号为每天1次 服务号为每月
  • java web——servlet+jsp实现前后台交互

    大学生涯终于结束 在公司学习了一段时间的java web方面的知识 结合自己之前的一些理解 想通过几篇文章来对我所接触到的java技术进行梳理与总结 也希望能给大家一些参考 由于作者水平有限 难免存在一些不足之处 希望能一起探讨 1 ser
  • 毕业设计 - 个人博客系统的设计与实现【源码+论文】

    文章目录 前言 一 项目设计 1 模块设计 博主功能用例 游客功能用例 2 实现效果 二 部分源码 项目源码 前言 今天学长向大家分享一个 Java web 毕业设计 项目 个人博客系统的设计与实现 一 项目设计 1 模块设计 博主功能用例
  • Java web 学习笔记

    Java Web 1 web基础 1 1 基本概念 web开发 网页开发 分为 静态web 和 动态web 静态web 由 html css JavaScript 共同组成 提供给所有人看 数据永远不变 动态web 提供给所有人看的数组 在
  • jeecgboot问题解决方案

    常见问题Q A JEECG老版在线文档 点击进入 1 后台访问提示token错误 报错截图 解决方案 JeecgBoot后台的所有请求访问 增加了token机制 所以不能直接访问后台 而需要通过前台登录才能访问 默认前台访问地址 http
  • smbms 获取角色操作,角色管理实现

    为了我们职责统一 可以把角色的操作单独放在一个包中 和pojo中的对应 RoleDao 接口 package com Li dao role import com Li pojo Role import java sql Connectio
  • 基于Java的教学信息反馈系统设计与实现(源码+调试)

    项目描述 临近学期结束 还是毕业设计 你还在做java程序网络编程 期末作业 老师的作业要求觉得大了吗 不知道毕业设计该怎么办 网页功能的数量是否太多 没有合适的类型或系统 等等 今天给大家介绍一篇基于Java的教学信息反馈系统设计与实现
  • 基于Java的在线投稿系统设计与实现(源码齐全可用)

    项目描述 临近学期结束 还是毕业设计 你还在做java程序网络编程 期末作业 老师的作业要求觉得大了吗 不知道毕业设计该怎么办 网页功能的数量是否太多 没有合适的类型或系统 等等 你想解决的问题 今天给大家介绍一篇基于Java的在线投稿系统

随机推荐

  • 告别枯燥乏味的编程学习,在欢声笑语中学会Python,华为大佬极力推荐Python漫画书!

    Python是学习大数据 人工智能时代的首选编程语言 Python因上手简单被越来越多的人所喜爱 每年使用人数在各类语言中稳居前二 而且每年是用人数还在直线上升 但是对于想要入门Python的同学仍一头雾水 虽然网上的资料很多 但是很多资料
  • 建站系列(七)--- 常用前后端框架

    目录 相关系列文章 前言 一 何为框架 二 为什么使用框架 三 常用框架 一 Bootstrap 二 Layui 三 JQuery 四 Vue js 四 ThinkPHP 五 Spring Boot 相关系列文章 建站系列 一 网站基本常识
  • 大家一起学电脑之硬件版

    大家一起学电脑之硬件版 首先文章还是先从硬件的认识开始 再到安装操作系统的注意事项 再到进入与退出系统可能发生的情况与问题 然后再说单个硬件的详解 最后再说故障和技巧吧 晕 因为有些文章因为发现的晚 所以排序有点儿乱了 0 38 02 11
  • 区块链开发

    区块链开发如今常见的语言有哪一些 区块链技术其实在如今的市场上已经得到大家的关注 这是大部分人可能并不了解 这到底是一种什么样的技术 为什么各大行业的巨头都会比较关注呢 如今的区块链开发已经进入到火热的阶段 那么你是否知道到底包含哪一种主要
  • Mybatis 是如何进行分页的?分页插件的原理是什么?

    1 Mybatis 使用 RowBounds 对象进行分页 也可以直接编写 sql 实现分页 也可以使用 Mybatis 的分页插件 2 分页插件的原理 实现 Mybatis 提供的接口 实现自定义插件 在插件的拦截方法内拦 截待执行的 s
  • git 如何解决 (master

    git 如何解决 master MERGING git reset hard head 回退版本信息 git pull origin master 转载于 https www cnblogs com 651434092qq p 110188
  • 国产开源新标杆!20B大模型,性能媲美Llama2-70B,单卡可推理

    明敏 发自 凹非寺量子位 公众号 QbitAI 国产新标杆 免费可商用的200亿参数大模型 来了 书生 浦语大模型 InternLM 20B版本正式发布 一举刷新国内新一代大模型开源纪录 它由上海人工智能实验室 上海AI实验室 与商汤科技联
  • MySQL入门---超详细安装及基本使用教程

    数据库技术和数据库系统 数据库技术和数据库系统已经成为计算机信息系统的核心技术和重要基础 gt gt MySQL简介 MySQL是一款单进程多线程 支持多用户 基于客户机 服务器 Client Server C S 的关系数据库管理系统 是
  • 怎么使用blender

    Blender是一款开源3D建模和动画软件 可以用来制作三维图像 动画 游戏 音频和视频 要使用Blender 需要先下载并安装该软件 安装完成后 打开Blender 您会看到一个3D空间 包含一个默认的立方体 可以通过鼠标和键盘来对立方体
  • strdup函数的用法

    函数名 strdup 功 能 将串拷贝到新建的位置处 用 法 char strdup char str 这个函数在linux的man手册里解释为 The strdup function returns a pointer toa new s
  • 推荐系统实战5——EasyRec 在DSSM召回模型中添加负采样构建CTR点击平台

    推荐系统实战5 EasyRec 在DSSM召回模型中添加负采样构建CTR点击平台 学习前言 EasyRec仓库地址 DSSM实现思路 一 DSSM整体结构解析 二 网络结构解析 1 Embedding层的构建 2 网络层的构建 3 相似度计
  • 【毕业设计】深度学习验证码识别算法研究与实现 - python 机器视觉

    文章目录 0 简介 1 数据收集 2 识别过程 3 网络构建 4 数据读取 5 模型训练 6 加入Dropout层 7 数据增强 8 迁移学习 9 结果 9 最后 0 简介 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以
  • 测试老鸟总结,性能测试需求分析-性能必要性,一篇打通...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • java中Optional使用方法

    Optional是Java 8中提供的一个容器类 用来装载可能为空的引用 在使用Optional时 不需要检查null 可以避免NullPointerException 1 创建Optional实例 Optional可以通过工厂方法of o
  • Linux下PostgreSQL主备环境搭建和切换

    1 概念 数据库热备 数据库热备是指为主数据库的创建 维护和监控一个或多个备用数据库 它们时刻处于开机状态 同主机保持同步 当主机失灵时 可以随时启用热备数据库来代替 以保护数据不受故障 灾难 错误和崩溃的影响 流复制 streaming
  • ubuntu基于docker搭建hadoop集群【史上最详细】

    1 安装docker ubuntu 18 04安装 docker 2 拉取 ubuntu镜像 如果不指定版本号的话 默认拉取最新的ubuntu版本 docker pull ubuntu 3 创建容器 1 查看已拉取的镜像 docker im
  • 统信UOS桌面操作系统安装教程

    配置推荐 CPU 频率 2GHz 及更高的处理器 内存 推荐配置 4GB 以上 最低配置 2GB 硬盘 至少 64GB 的空闲硬盘 https www uniontech com next product desktop system ed
  • Linux系统:安装python3

    目录 一 python函数输出 1 print 函数输出 二 实验 1 安装python3 一 python函数输出 1 print 函数输出 1 概念 在Python中 使用内置的print 函数可以将结果输出到IDLE或者标准控制台上
  • 人工智能-知识图谱的进阶一

    第一部分 概论 本文主要分为三个部分 第一个部分介绍我们为什么需要知识图谱 第二个部分介绍知识图谱的相关概念及其形式化表示 最后 作一个简单的总结 并介绍该专栏后续文章会涉及的内容 一 看到的不仅仅是字符串 当你看见下面这一串文本你会联想到
  • config:fail,invalid signature

    微信开发调用JS SDK某些页面报config fail invalid signature 注意 是某些页面才会报这个错误 导致 wx config 失败 百思不得解 看了几遍文档 确认url是页面完整的url 请在当前页面alert l