【SpringBoot】局域网访问Web应用

局域网访问Web应用

启动SpringBoot项目后,默认情况下在本机可以通过localhost或者局域网的IP地址访问。然而,当使用其他电脑或手机访问时,却无法连接,提示连接超时。
笼统的答案是:需要设置防火墙规则。如HTTP协议,通常是设置TCP协议,以及开放80或8080端口这样。但是具体情况需要具体分析,这里仅介绍在Windows操作系统上的解决过程。我们知道Windows防火墙除了“入站规则”和“出站规则”以外,还有“允许应用或功能通过防火墙”的选项。因此防火墙在过滤数据包的时候需要考虑很多规则,是很复杂的。
经过抓包,ping测试等一系列调查后。我意识到,我是直接在终端通过mvn spring-boot:run的指令运行程序的。因此,java.exe实际上就是服务器程序本身。最后发现,在之前的使用过程中,java.exe程序已经被防火墙设置了访问规则。也许是出于谨慎,每当防火墙提示是否允许应用联网时,我总是习惯性的点击只允许“专用网络”。而恰巧遇到问题的时候,正处在“公用网络”中。
解决方法很简单:点击“控制面板”>“Windows防火墙”>“允许的应用”,把Java设置成可以同时在专用或者公用网络进行通信即可。 另外需要注意,如果有多个JDK,每个JDK的通信是需要单独设置的。

感悟

网上也有一些类似的想要解决这个问题的文章,但讲的不是很具体,并不满意。甚至还有说让“关闭防火墙”这种昏招的。因此自己进行了一定实验,从抓包和ping开始,判断是无法入站还是无法出站,到底是哪个环节出了问题。最后又忽然想起,防火墙的过滤规则和优先顺序。于是想到是否是对Java应用进行了设置。
遇到问题类似问题还是要考虑到我们使用的电脑的系统环境,例如我的电脑装了很多软件,不仅有开发软件也有网络游戏,那么就会有很多其他的防火墙规则。在学习开发SpringBoot项目,程序本身是怎么运行的又会对如何通过防火墙有影响,等等。可惜这些很具体的东西不是所有文章都会去提,并不是很有帮助,因此写下这篇文章。

你可能感兴趣的:(spring,boot,后端,java)