由于公司办公网络 IP 不是固定的,每次变更时,本地开发机器调用微信开放平台接口时都会因为IP白名单问题而报错。
一个有效但繁琐的解决办法是,每次报错时,手动获取本机新的IP并登录开放平台将IP加入到白名单中。
这样做,一两次还好,如果经常如此,怕谁也受不了。
下面提供一个更高效的方式。(这个方式不限于公众号开发,基本上所有同类问题都可照此方法解决!)。
既然问题出在 IP 会变化上,我们就想办法弄一个不会变的 IP 来使用。
互联网公司基本都会有自己的公网服务器,而且这个公网服务器 IP 一般是不会变的,能利用这个不变的 IP ,岂不妙?
怎么做?
之前的文章 《ssh二三事》中,介绍过 SSH 的一些用法,尤其是强大的端口转发。
我们要做的,是把公网服务器的 IP 设置到开放平台IP白名单中,再将公网服务器设置为一个代理,本地开发机器使用这个代理来发送请求。如此一来,当本地机器调用开放平台接口时,对开放平台而言,看到的 IP 会一直是公网服务器的,不会受到本机 IP 改变的影响。
目的达成。
实现步骤如下:
-
打开动态端口转发(socks5代理):
# 在开发机器上执行
ssh -D 12345 -N your_server
把 your_server 换成公网服务器登录地址。
通过以下命令检查代理是否成功:
# 在开发机器上执行
# 会发现返回的ip是公网服务器的ip
curl -x socks5://127.0.0.1:12345 httpbin.org/ip
-
在IDE中设置jvm运行参数:
-DsocksProxyHost=localhost -DsocksProxyPort=12345
Intellij IDEA 中设置截图如下:
-
给用到的网络库设置代理
如果你用的是 Spring 框架内置的 RestTemplate 来调用公众平台接口,请参考网络上设置代理的方法。
我用的是封装好的微信公众平台API,试了一下,它会自动应用上上面的jvm参数:
<!-- 我使用的公众平台库 -->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.9.0</version>
</dependency>
以上,本地开发时的IP白名单问题就化解了,不用再为频繁变动的 IP 问题而烦扰。
– END –
原文始发于微信公众号(背井):解决微信公众号本地开发时的IP白名单问题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/246723.html