热门标签 | 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的,你只要记住我说的是重点和常见的坑,都百度这个了大体应该有点基础了


推荐阅读
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • log4j相关
    Log4j的类图Logger-日志写出器,供程序员输出日志信息Appender-日志目的地,把格式化好的日志信息输出到指定的地方去ConsoleAppe ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
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社区 版权所有