微信/企业微信-本地(MAC)VUE项目调用JS-SDK,开发测试环境搭建

article/2025/9/16 23:23:23

调用微信SDK前置条件
根据官方文档,前端在使用微信的接口前要先进行配置,配置信息得从后端获取,后端在计算signature时需要前端传入当前页面的URL,开发者要在公众平台设置JS SDK安全域名,在这个域名下才能使用微信JS SDK,所以前端需要满足下面两个条件才能成功调用JS SDK

  • js请求需要从微信配置的安全域名下发出
  • 在微信客户端或者在电脑端的微信开发者工具运行,测试

环境配置

  • 通过安全域名访问本地代码
    • 本地配置 + vue项目代码配置
    • 在手机端的微信中通过安全域名访问本地代码
    • Fiddler 安装及连接手机抓包

通过安全域名访问本地代码

本地配置 + vue项目代码配置

参考此文章
我们要做的就是让指定域名映射到本地,然后转发给开发服务器

  • 如果后台接口和配置的安全域名用的同一个,那么接口就会请求不到,需要改为用域名的端口去请求接口,这里ping的时候,不要加http
$ ping testwx.test.com

下面就是我们需要的ip这就是我们需要的IP

  • 在vue项目中的config/index.js把请求接口代理的域名改为此ip
dev: {// PathsassetsSubDirectory: 'static',assetsPublicPath: '/',proxyTable: {'/api': {target: 'http://' + 刚才获取到的ip,changeOrigin: true,pathRewrite: {'^/api': '/'}}},

我们要做的就是让指定域名映射到本地,然后转发给开发服务器,主要就是修改host文件。假设在公众平台设置的JS SDK安全域名为testwx.test.com

  • 修改host配置文件,把安全域名映射到127.0.0.1
$ sudo vim /etc/host
# 在host文件中添加以下内容
# 127.0.0.1 testwx.test.com
  • 由于本地开发服务器监听的是 8080 端口,还得将 8080 端口转发给默认的 80 端口。先检查有没有进程在监听 80 端口,然后再转发。使用lsof命令查看有没有进程在监听 80 端口。
$ lsof -i -P -n | grep LISTEN
ss-local   3065 admin    6u  IPv4 0xa8ba2df099418f61      0t0  TCP 127.0.0.1:1086 (LISTEN)
redis-ser  3079 admin    4u  IPv4 0xa8ba2df09adbcc39      0t0  TCP 127.0.0.1:6379 (LISTEN)
privoxy    3085 admin    3u  IPv4 0xa8ba2df09adbd531      0t0  TCP 127.0.0.1:8118 (LISTEN)
privoxy    3085 admin    4u  IPv4 0xa8ba2df09b378341      0t0  TCP *:8118 (LISTEN)
postgres   3098 admin    6u  IPv4 0xa8ba2df09adbba49      0t0  TCP 127.0.0.1:5432 (LISTEN)
  • 既然没有进程在监听80端口,接下来配置端口转发
# 转发80端口到8080端口
$ echo " rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080" | sudo pfctl -ef -
# 查看当前端口转发规则
$ sudo pfctl -s nat
# 移除端口转发规则,不必执行
# sudo pfctl -F all -f /etc/pf.conf
  • 转发端口后,页面返回Invalid Host header,需要在my_project/build/webpack.dev.conf.js文件中找到devServer配置,增加一个选项。
devServer: {...,disableHostCheck: true
}

如果出现报错
在这里插入图片描述
根据报错提示
在webpack 5 中disableHostCheck应该被遗弃了
查看文档了解到需将 disableHostCheck:true
替换为

devServer: {...,historyApiFallback: true,allowedHosts: “all”,
}

现在就可以Mac的微信开发者工具中调试JSSDK了,在地址栏输入:testwx.test.com,就会将请求转发给本地开发服务器了

这样就可以成功通过安全域名访问到本地vue代码,并顺利通过后台获取到微信JS SKD需要的配置数据,此时已经可以通过微信开发工具使用调试了

在手机端的微信中通过安全域名访问本地代码

有部分功能(例如扫一扫,录音等)需要在手机端调试,则需要在手机端的微信中通过安全域名访问本地代码,微信中访问上面配置的安全域名,会无法访问
在这里插入图片描述

  • 需要手机能访问,则需要在vue项目中重启本地环境
yarn run dev --host 0.0.0.0

这样处于同一个网段(PS:连同一个WiFi)的设备都可以访问本地的vue项目了

Fiddler 安装及连接手机抓包

参考此文章
需要在手机端调试,我们可以通过用fiddler连接手机来抓接口

  • 下载OS版的fiddler-官网
  • 双击软件打开后页面如图:
    在这里插入图片描述
  • 通过信任
    在这里插入图片描述
  • 这里需要设置一下允许远程连接,才可以对手机抓包。而且端口号也要记一下,在手机上配置代理时需要。在这里插入图片描述
  • 打开手机设置(以苹果手机举例):
  • 找到Wi-Fi选项,需连接和电脑同一Wi-Fi,连接后点击此Wi-Fi进行配置页面,进行代理设置输入。
  • 选择手动输入代理,然后输入电脑ip 及 端口,保存即可。
    在这里插入图片描述
  • 此时电脑已经可对手机进行抓包操作了

现在在手机端就可以通过testwx.test.com访问到本地vue项目,并且可以在fiddler中看到对应的接口请求,就可以愉快得调用微信的JS SDK了,

注意:如果手机端开启了代理,则需要打开fiddler才能访问,不用fiddler的话,需要把手机端代理关掉才能访问本地项目的页面


http://chatgpt.dhexx.cn/article/dduwDk1Y.shtml

相关文章

innodb 集群_部署MySQL InnoDB集群以实现高可用性

innodb 集群 In this article, I am going to explain how we can deploy the MySQL InnoDB cluster. InnoDB Cluster is a high availability solution provided by MySQL that has single and multi-master capabilities and failover detection. 在本文中,我将解…

ping命令和它的“亲友”们

前面在《kali主机发现背后的秘密》文章里,介绍了几个*ping的命令。ping可是“可人儿”。瞧,它们都来攀亲戚了,蹭热度来了。今天我们就来认识一下它们。 关系 名称 功能特点 备注 本宗 ping 网络诊断工具,测试互联网协议网络…

搞了运维开发这么多年,原来 Ping 还能这么玩儿

作者:刘勇 腾讯后台研发工程师,就读于北京大学。目前主要从事腾讯云-云拨测项目后台开发相关工作。 网络:良辰有一百种方法让你 Ping 不通,你却无可奈何 为什么 Ping 不通了?为什么又通了? 这些居然都能…

同一局域网下访问vue项目

同一局域网: 在你的电脑上用快捷键windows R打开cmd,使用ping ip地址(想要访问你项目的那台电脑的ip地址),如果成功后就表示你们处于同一局域网下。 本机ip地址 在你的电脑上用快捷键windows R打开cmd&#xff…

【Java 并发编程】一文详解 Java 中有几种创建线程的方式

Java 中有几种创建线程的方式? 1. Java 程序天然就是多线程的2. 线程的启动与终止2.1 线程的启动(1)继承 Thread 类,重写 run() 方法(2)实现 Runnable 接口,重写 run() 方法(3)Thre…

【操作系统】创建线程的方式

学习目标: 目标:掌握操作系统知识 学习内容: 本文内容:创建线程的方式 文章目录 学习目标:学习内容:1创建线程的方法一 : 继承Thread类1.1 写法一1.2 写法二 2 创建线程的方法二 :…

想不到吧,Java创建线程的方式只有一种

目录 前言继承Thread方式实现Runnable接口实现callable接口总结 前言 看到这个标题的小伙伴先别着急喷我……在面试的时候,我们经常会被问到这种基础题:Java创建线程的方式有几种? 比较正常的答法当然是三种: 继承Thread实现Ru…

【 java 多线程】创建多线程的方式三:使用 Callable 接口创建多线程

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

关于创建线程的方式有几种

导语 在我们平常的面试中,我们经常会被面试官问道:你知道Java中多线程的实现方式有几种吗?在网上刷过面试题的童鞋们,一般都会说两种:继承Thread、实现Runnable,甚至还有甚者可能会说三种、四种的&#xf…

Java创建线程的方式只有一种:Thread+Runnable

Java创建线程的方式其实只有一种 👨‍🎓一、继承Thread👨‍🎓二、实现Runnable接口👨‍🎓三、实现Callable接口👨‍🎓四、通过线程池创建👨‍🎓五、总结 一般…

java中创建线程的4种方式

写在前面的话 java线程创建方式有几种?这种问题在面试中经常被问到,你可能心里马上反映出两种方式(实现Runnable、继承Thread),当你把这两种叙述给面试官听后,面试官会觉得你该掌握的知识已经有了&#xf…

【 java 多线程】创建多线程的方式四:使用线程池创建多线程

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

创建线程的方式

一般来说,创建线程有三种方式:继承 Thread 类、实现 Runnable 接口和实现 Callable 接口。 继承 Thread 类:继承 Thread 类,重写 run() 方法,调用 start() 方法启动线程。 public class MyThread {public static cla…

【JAVAEE】创建线程的方式及线程的常用方法

目录 1.创建线程的四种方式 1.1继承Thread类 1.2实现Runnable接口 1.3匿名内部类 1.4lambda表达式 2.多线程的优势-增加运行速度 3.Thread类及常用方法 3.1构造方法 3.2常见属性 演示后台线程 演示线程是否存活 3.3线程中断 3.4线程等待-join() 3.5获取当前线程 …

创建线程的方式有那些?

目录 一.创建线程的4种方式 二.创建线程方式有什么区别? 一.创建线程的4种方式 (1)写一个类继承Thread,覆盖重写run方法 (2)创建一个Runnable类型的对象,实现run()方法,传入Thread的构造方法中 &#x…

创建线程几种方式

创建线程的几种方式: 方式1:通过继承Thread类创建线程 步骤:1.定义Thread类的子类,并重写该类的run方法,该方法的方法体就是线程需要执行的任务,因此run()方法也被称为线程执行体 2.创建Thread子类的实例&a…

线程创建的四种方式

java中创建线程的四种方法以及区别 Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用四种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线程 3&am…

四种线程创建方式

一. 继承Thread类 继承Thread类创建线程的步骤: 创建一个自定义类继承Thread类,重写run()方法,将所要单独线程运行写入run()方法中;创建Thread类的子类的对象;调用该对象的start()方法,该start()方法表示开启线程,然后调用执行run方法; Testpublic void test() {Thread.curre…

创建线程的四种方式

我们创建线程池一般有四种方式,分别是: 1.继承Thread类,重写run()方法; 2.实现Runnable接口,重写run()方法; 3.实现Callable接口,重写call()方法; 4.使用线程池创建线程;…

线程创建常用的四种方式

java中创建线程的四种方法以及区别 Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用四种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线程 3&…