本地主机拒绝连接 - ERR_CONNECTION_REFUSED

4
我有一个简单的MVC Web应用程序,其中JavaScript代码向控制器发送Ajax请求,控制器发送响应。
我是两年前构建的这个应用,当时一切都很正常。现在我试图再次在本地运行该应用,并遇到以下问题:每当从前端向控制器(在本地主机上运行)发送Ajax请求时,本地主机就会拒绝连接,并且我会在(Chrome的)Javascript控制台中收到ERR_CONNECTION_REFUSED消息。(在Safari的Javascript控制台中,我收到以下错误消息:“无法加载资源:无法连接到服务器。”)
我正在使用NetBeans 11.2运行应用程序。我的NetBeans IDE使用GlassFish作为服务器:
我从NetBeans IDE中删除了Glassfish服务器,在我的主目录中删除了它的文件夹,然后在我的NetBeans IDE中重新添加了Glassfish服务器(这也需要下载最新版本的Glassfish服务器)。
仍然,服务器拒绝接受来自前端的任何请求。
我还尝试使用Payara Server(版本5.193)。但这也没有改变。
顺便说一下,前端本身看起来很好。也就是说,访问http://localhost:8080/myapp可以加载应用程序的前端。但是,应用程序的任何动态功能都不起作用,因为服务器拒绝接受来自前端(并通过鼠标点击启动)的任何Ajax请求。
我该如何解决这个问题?
我认为我找到了问题的原因:
在我的Javascript文件中,我有以下代码行:
var url = "http://localhost:8080/myapp/Controller";

变量"url"被传递给发送到本地主机的所有AJAX请求。但是这里有个疯狂的事情:AJAX请求不会被发送到"http://localhost:8080/myapp/Controller",而是被发送到"http://localhost:8081/myapp/Controller"!!!
这到底是怎么回事?!

2
[1] 更新您的问题,说明您正在使用哪个浏览器以及您的NetBeans版本。[2] 如果使用基于Chrome的浏览器,则可能会有所帮助的文章是"ERR_CONNECTION_REFUSED:处理此Chrome错误的最佳解决方案"。[3] 无论如何,最好使用各种浏览器进行测试,以查看是否会得到不同的结果。[4] 另一个尝试的方法是使用不同的应用服务器,例如Payara或Tomcat。[5] 验证您是否可以连接到localhost - skomisa
1
@steady-progress,你能连接到默认的网页(localhost:8080)吗?你能连接到管理控制台(localhost:4848)吗?在部署应用程序时,输出窗口(ctr+4)中是否有任何可疑的日志消息?你是否更改了旧版本的glassfish中的任何设置,无论是从domain.xml还是从管理控制台? - Dmitry.M
@skomisa 我已经能够连接到本地主机了...我已经知道你提供的链接了...我编辑了我的问题以提供更多细节。 - steady_progress
就我所知,我从未对我使用过的任何Glassfish服务器版本(包括当前最新版本)进行过任何更改。 - steady_progress
@steady_progress,你能像这里提到的那样调试你的ajax调用,并查看浏览器发送ajax请求时网络选项卡中发生了什么吗?你的浏览器上安装了广告拦截插件吗? “输出窗口”是指NetBeans -> 窗口 > 输出 > Glassfish日志。 - Dmitry.M
显示剩余6条评论
2个回答

2

您之前使用过8081端口,并将变量"url"更改为新的8080端口吗?如果是这种情况,可能缓存中仍然设置了旧值。重新启动计算机,查看是否解决了问题。


1
@steady_progress,在这种情况下,考虑清除浏览器缓存。查看 - Dmitry.M

1
如果属性http-listener的值为localhost,它将拒绝外部连接。
您可以使用以下命令验证其值。
asadmin> get server-config.network-config.network-listeners.network-listener.http-listener-1.*

应返回类似以下信息:

server.http-service.http-listener.http-listener-1.acceptor-threads = 1
server.http-service.http-listener.http-listener-1.address = 0.0.0.0
server.http-service.http-listener.http-listener-1.blocking-enabled = false
server.http-service.http-listener.http-listener-1.default-virtual-server = server
server.http-service.http-listener.http-listener-1.enabled = true
server.http-service.http-listener.http-listener-1.external-port =
server.http-service.http-listener.http-listener-1.family = inet
server.http-service.http-listener.http-listener-1.id = http-listener-1
server.http-service.http-listener.http-listener-1.port = 8080
server.http-service.http-listener.http-listener-1.redirect-port =
server.http-service.http-listener.http-listener-1.security-enabled = false
server.http-service.http-listener.http-listener-1.server-name =
server.http-service.http-listener.http-listener-1.xpowered-by = true

使用set子命令修改属性。
此示例将http-listener-1的address属性设置为0.0.0.0:
asadmin> set server.http-service.http-listener.http-listener-1.address = 0.0.0.0

参考资料:

https://docs.oracle.com/cd/E19798-01/821-1751/ablaq/index.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接