痛点说明

在实际开发过程中,公众号或者小程序开发都涉及到授权登录,我们最初原始的做法都是写好代码后,发布在测试环境中,然后再进行调试,有一个头痛的点在于如果你要验证你的想法,改动js的话,那么必须重新打包编译。打包和发布都是非常耗时的。引出痛点:是不是可以在开发环境的热更新过程中实现调试公众号网页呢?

需要理解的点:

1、公众号是一个h5的页面,在开发者工具和在浏览器去发起网络请求,渲染页面都是一样的。不要神话公众号的网页。
2、后台的接口在能不能通,在于后台的接口对授权凭证的限制
3、后台的接口只是想要一个凭证,证明你已经微信授权过了
4、微信授权的步骤在开发工具中走掉,后台的授权凭证就有了
5、有了授权凭证就放在每次请求的http头部协议里面
6、web server可以通过中间件代理http请求

下面介绍的是有了凭证之后,怎么具体实现,以VUE为例子。
跟微信交互获取access-token,access-token是我们的服务器跟微信交互的凭证。通常有两种方法把access-token用于接口凭证交互。服务端通过access-token来判断用户是否登录微信,获得授权,以及微信配置信息。
第一种做法是后台服务器通过一个接口暴露这个access-token给前端,前端拿到后,对所有接口请求进行加工,比如加密后放在请求的headers['Authorization']="Basic access-token";
第二种做法是后端在后台静默地将access-token写入当前浏览器的cookie值。(中间可能时sha256编码或者其他方式转化过的)。

无论哪种方法,本质在于发出请求的时候,需要一个值验证用户的微信授权登录状态,接口才能暴露数据。

具体实现

利用node-http-proxy中间件,在监听请求事件中修改Header的参数配置,这样使得所有接口请求头都加入了access-token凭证(无论是Authorization还是cookie).

以vue-cli生成的项目为例,在vue.config.js文件中设置:

  devServer: {host: '', // target hostport: 8080,proxy: { // 代理指的是当前项目的"/"请求到target: 'http://test.xxxxxx.com',这个请求过程被devServer劫持代理'/': {changeOrigin: true, // 代表可以允许跨域target: 'http://test.xxxxxx.com', // 后端服务器地址logLevel: "debug", // 打印日志的方式打印出具体的转发信息onProxyReq (proxyReq, req, res) { // 注册事件proxyReq.setHeader('cookie', 'access-token=d9bb4586') // 如果是通过cookie写入proxyReq.setHeader('Authorization', 'Basic d9bb4586') // 如果是通过Authorization方式写入},},}}

值的获取

上面的案例中,值是怎么来的?
第一种情况,后台会提供一个生成accessToken的接口,通过postman调用获取。这中间的技术栈可能是填你的手机号码后,模拟你的手机微信登录。
第二种cookie形式的,可以自己通过开发工具,授权登录后在请求的header头里面找到cookie值,这个cookie值是后台写到微信浏览器上的。

值的有效期

通常这种登录凭证的值,时间取决于后台开发,由于微信的限制,最多是24小时。故而对于我们调试来说,足够了。如果时间设置的太短,可以让后台在测试环境开放长一点的时间。

掉过的坑

我最开始摸索的时候,填入了一个假值,也就是如我代码那样,我想测试查看一下是不是真的会修改cookie值。然后大失所望,我怀疑这个方法未被调用,即使我在onProxyReq 事件中打印log也毫无反应,断点也无法捕捉到。心灰意冷地时候,我用开发工具获取一个新的cookie值,正确的值,然后填入proxyReq.setHeader('cookie', 'access-token=d9bb4586') 里面,意想不到的画面既然是接口通过了,数据返回了。
原因是我武断认为我的配置,应该在本机浏览器发出的请求上反映出来,如果我配置的cookie=1,那么浏览器上显示也应该是1. 而恰恰偏离了代理服务器的初衷。也就说代理服务器这一层设置,我们是看不见的。

配置好代理服务器时前端在浏览器中展示的是请求地址不是自己配置后得转发转发地址

综上

通过代理服务器的配置,携带上接口需要的验证值,这样就实现了在本地开发环境中调试微信公众号网页。

在浏览器上调试公众号网页的操作流程相关推荐

  1. 微信开发者工具,调试公众号网页,控制台不显示,解决方案

    微信开发者工具,调试公众号网页,控制台不显示,解决方案 第一步:关闭"微信开发者工具" 第二步:在C盘找到该路径 C:\Users\当前系统用户名\AppData\Local\ 在 ...

  2. 微信开发者工具调试公众号网页提示: 未绑定为公众号的网页开发者

    前言 工作中难免需要给客户处理各种问题,此时开发者需要使用微信开发者工具调试,调试前需要客户将开发者配置为公众号的网页开发者.为了避免重复沟通,特写篇文章记录配置过程 1. 情景再现 开发者使用微信开 ...

  3. 微信公众号网页开发——实用真机调试

    前言 微信公众号网页开发的真机调试一直是很头疼的事情. 原因一 微信公众号配置的JS安全域名只有三个,一个大中型的公众号这三个JS安全域名都是生产的域名,不可能预留域名用于开发和调试. 原因二 在微信 ...

  4. 微信公众号网页在本地开发模式下如何使用正式环境的域名来调试

    微信公众号网页在本地开发模式下如何使用正式环境的域名来调试? 鄙人之前也不知道,网上搜了一下,看到的几篇文章都是要使用代理,有用Nginx的,还有自己写代理的.主要是按照步骤做了并不行.于是自己折腾了 ...

  5. 前端对接微信公众号网页开发流程,前期配置

    微信公众号网页开发,其实就是我们开发的h5网页需要放到微信浏览器环境中使用,但是需要对接公众号授权,授权之后可以获取到用户的个人信息,以及可以使用公众号提供的一些API,如:图片上传.图片预览.获取位 ...

  6. vue3+vant开发微信公众号网页爬坑不完全指北

    点击上方 前端Q,关注公众号 回复加群,加入前端Q技术交流群 前言 8月底的时候接到了一个微信公众号网页开发的任务, 在此之前我从没开发过微信公众号网页的项目, 心想这回又能学到新东西了, 然后又是移 ...

  7. 多商户无限座席在线客服在线对话聊天系统源码,防黑防丢,完美商用支持app公众号网页H5

    源码介绍 外面的现在这个内核的基本都是有一个gif图片木马后门的,这个请一定注意一定小心,别贪便宜吃了大亏!!!! 几天给大家放送一套非常不错的源码!锦尚中国自用的在线客服系统,诸多的客户搭建网站的同 ...

  8. 公众号开发(2) —— 盛派.net SDK + vue搭建微信公众号网页开发框架

    需求:通过微信公众号菜单跳转到手机端网页,跳转后通过微信授权登录获取微信公众号用户的OpenId(用户关注公众号后,用户在公众号的唯一凭证),通过OpenId和后台数据库用户信息绑定起来并实现一些业务 ...

  9. 微信公众平台网页服务器,微信公众号——网页端

    引言 此篇文章主要涉及以下内容: 公众号网页授权方法 Oauth2原理 JSSDK调用方法 网页授权 (A)用户访问客户端,后者将前者导向认证服务器. (B)用户选择是否给予客户端授权. (C)假设用 ...

最新文章

  1. 2019蓝桥杯省赛---java---A---6(完全二叉树的权值)
  2. 阿里云助力江苏省财政厅力推统一公共支付平台
  3. html的课设作业6,第七节课html标签元素属性作业-2019-9-6 作业
  4. STM32 - 定时器的设定 - 基础 01 - Timer Base - Prescaler description - Upcounting mode
  5. 开源运维管理软件排名_车主无忧:为什么放弃开源Kafka?
  6. 《文献检索》期末复习整理~2020
  7. 【leetcode】二分查找经典题目
  8. 【人脸表情识别】基于matlab GUI LBP+SVM脸部动态特征人脸表情识别【含Matlab源码 1369期】
  9. E-Prime1.1安装教程及软件下载
  10. [ 物联网篇 ] ESP32 AWS IoT and Amazon Alexa Development / FreeRTOS平台的Alexa语音助手
  11. TeeChart Pro Activex 2022.1/32/64/Crack
  12. 被拖欠2个月工资,最后我拿到了6个月《打工人的那些事》
  13. 云栖独栋别墅_绿野云溪花海独栋别墅
  14. python数学公式代码_PythonStudy_‘数学公式计算器’代码
  15. 区块链学习—通证经济学的诺奖理论基础
  16. C语言:n个数的阶乘之和
  17. windows phone水平滑动翻页动画效果
  18. centos7 team 绑定
  19. 为什么Linux比windows嵌入式系统
  20. 安卓手机ppt阅读器_PC上一款非常好用的PDF阅读器,支持免费格式转换、支持云端同步...

热门文章

  1. java逻辑运算符试题_Java逻辑运算符(、||和!)
  2. Unity 3D 关于cube等物体的颜色问题
  3. ASO优化之关于应用宝的关键词排名
  4. html字体错误,CSS字体
  5. 手把手教你下载node
  6. AR在工业领域的应用:印刷电路板的检查和抛光表面的质量评估|effiar
  7. 联想E480安装ubuntu后无法使用wifi的真实解决方案
  8. 一加七语音唤醒_一加语音助手怎么唤醒_在哪里设置
  9. EndNote X9 在 Word 中嵌入 参考文献格式 全网最详细介绍
  10. 为什么手机换张卡就有就显示无服务器,手机卡为何一直显示无服务,但是在自家城市就会有信号。换了个城市就无服务了。...