热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将内网IP虚拟成外网能够访问的域名

应用场景:微信开发时经常需要回调地址,下面对微信需要的回调地址啰嗦几句回调地址(回调接口):(微信通过你的发送的请求(比如授权,支付等),响应给你的信息,但是他不知道怎么返回给
应用场景:

微信开发时经常需要回调地址,下面对微信需要的回调地址啰嗦几句

回调地址(回调接口):(微信通过你的发送的请求(比如授权,支付等),响应给你的信息,但是他不知道怎么返回给你,这个时候他说你要是能够配置一个回调地址,那他就把响应的信息放到这个地址里面,但是不能是IP地址,而是域名地址(相当于IP的别名,其实本质是一回事,但是他就认这个别名),但是你如果配置的是本地的地址IP,那么他仍然不能把响应的信息给你,因为条件是(1:这个地址外网能够访问,2:纯数字的IP地址他不认识),那么你需要做的就是满足他,配置一个(1:外网可以访问的地址,2:这个地址不要是单纯的数字的192.168.xx.x那种格式,而是https://www.baidu.com/这种域名的格式)他好把信息携带过来,放到你的回调地址)

怎么才可以满足这个微信回调地址的要求呢,这个时候需要第三方工具,比如花生壳,NATAIPP这些工具帮我们做1:(内网穿透)和2:(实现域名绑定的,就是把IP地址映射成域名,这样微信回调地址才认可)

1:在第三方官网注册:比如natapp网站地址 https://natapp.cn/

2:注册完了去实名认证一下,比如支付宝或者淘宝(身份证等),之后就可以买免费的版本,9元每月可以固定域名其实也还好

 3:选择免费隧道后,会到的以下信息

4:配置本地启动(这里以Windows版本为例,注意配置文件和natapp.exe在同一路径):https://natapp.cn/article/config_ini

 

5:点击客户端工具,启动,这时候就会有界面如图所示(是不是远程的域名 http://ms73qk.natappfree.cc -> 127.0.0.1:80)指向了本地,实现了:内网穿透(微信可以使用http://ms73qk.natappfree.cc)并且可以把它(http://ms73qk.natappfree.cc )当做回调域名(本质是127.0.0.1:80的IP地址),这个natapp软件保证了http://ms73qk.natappfree.cc是内网穿透的(就是外网可以访问的,比如微信访问这个是可以的),而且不在是单纯的数字IP地址,而是域名(只是这个免费版本域名是定期会变的,测试的话可以凑合使用的,如果变了,重新启动一下,在一段时间类似可以测试的,当然买个9元的收费的这个域名是可以固定的)

注意外网的80端口一般习惯对应本地的8080端口,所以一般会做一个映射(在"我的隧道"找到隧道,附近有个配置,点击进去就是可以设置8080),因为微信公众号回调他默认访问80端口,所以需要映射到你的8080端口,如果不配置8080,那么他去找80端口是找不到的,所以会提示配置失败,如图

 上面的/wechatback/test接口的写法(仅供参考,我也是网上找的一段)

import java.io.PrintWriter;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 微信接口配置需要的一个接口*/
@RequestMapping("/wechatback")
@Controller
public class WechatController {private static Logger logger = Logger.getLogger(WechatController.class);private static String WECHAT_TOKEN = "wx_oms";@RequestMapping(value = "/test")public void get(HttpServletRequest request, HttpServletResponse response) throws Exception {logger.error("WechatController ---- WechatController");System.out.println("========WechatController========= ");Enumeration pNames = request.getParameterNames();while (pNames.hasMoreElements()) {String name = (String) pNames.nextElement();String value = request.getParameter(name);// out.print(name + "=" + value);String log = "name =" + name + " value =" + value;}String signature = request.getParameter("signature");/// 微信加密签名String timestamp = request.getParameter("timestamp");/// 时间戳String nonce = request.getParameter("nonce"); /// 随机数String echostr = request.getParameter("echostr"); // 随机字符串PrintWriter out = response.getWriter();//if (SignUtil.checkSignature(signature, timestamp, nonce)) {out.print(echostr);
// }sout.close();
// out = null;}}

 

修改如

启动界面

 6:做你微信开发(NGINX需要简单配置一下),比如参考:https://natapp.cn/article/wechat_local_debug

 注意:微信公众号还需要配置域名

在设置的时候不需要加http://,不然还是会出现redirect_uri域名还是与后台配置不一致 

 

 在构造微信开发的URL传参时,接口的域名必须进行编码的解码后才可以,这个https://meyerweb.com/eric/tools/dencoder/网站可以实现URL编码(微信要求的)

 当然直接使用代码更好,如  

String encode = URLEncoder.encode(url, "ISO-8859-1");

 示例请求(获取微信网页授权,重点是URL哪里,其他的不重要)把这个发给微信好友,就可以获取它的头像,省份等

 

 注意需要关注(获取code)

 返回的code如图

 

7:常规natapp配置错误的情况(说一下我拆过的坑,我不知道我的反向代理配置的时候应该是正确的,但是不知道为什么代理到SVN去了,你们应该不会遇到): https://natapp.cn/article/errors

8:说明:我感觉有点乱,一会儿微信一会natapp的,你只要记住我说的是重点和常见的坑,都百度这个了大体应该有点基础了


推荐阅读
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • Java 中的十进制样式 getZeroDigit()方法,示例 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细探讨了Java事件处理机制的核心概念与实现原理,内容浅显易懂,适合初学者逐步掌握。通过具体的示例和详细的解释,读者可以深入了解Java事件模型的工作方式及其在实际开发中的应用。 ... [详细]
  • 微信平台通过盛派SDK(sdk.weixin.senparc.com)允许服务号和订阅号使用appId和token读取关注用户的个人信息。然而,这一过程需严格遵守隐私保护和数据安全的相关规定,确保用户数据的安全性和隐私性。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
author-avatar
wyzf88_987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有