【SpringBoot】局域网访问Web应用

本文讲述了在启动SpringBoot项目后,由于Windows防火墙规则设置导致局域网访问问题。作者详细描述了解决过程,包括Java.exe被设为专用网络限制、调整防火墙设置以及考虑系统环境对防火墙的影响。
摘要由CSDN通过智能技术生成

局域网访问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项目,程序本身是怎么运行的又会对如何通过防火墙有影响,等等。可惜这些很具体的东西不是所有文章都会去提,并不是很有帮助,因此写下这篇文章。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring Boot中实现局域网跨域请求可以通过配置CORS(跨源资源共享)来完成。CORS是一种机制,允许服务器在响应中添加一些特殊的HTTP头,从而允许在不同域之间进行跨域通信。 要在Spring Boot中实现局域网跨域请求,可以按照以下步骤进行操作: 1. 添加CORS依赖:在项目的pom.xml文件中添加以下依赖: ```xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 2. 配置CORS:在Spring Boot的配置类中添加以下代码: ```java@Configurationpublic class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*"); } }; } } ``` 上述代码中的`allowedOrigins`表示允许的源,这里使用通配符`*`表示允许所有源;`allowedMethods`表示允许的HTTP方法,这里也使用通配符`*`表示允许所有方法;`allowedHeaders`表示允许的HTTP头,这里同样使用通配符`*`表示允许所有头。 3. 启动应用程序:启动Spring Boot应用程序后,你的应用程序将支持局域网跨域请求。 请注意,由于CORS机制的安全性限制,浏览器可能会发送预检请求(OPTIONS请求)来检查服务器是否允许跨域请求。在服务器端,你可以通过处理这些预检请求返回相应的HTTP头来进行支持。 这样,你就可以在Spring Boot中实现局域网跨域请求了。希望对你有所帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值