2013-05-18 149 views
2

我有一个运行在Jelastic上的Tomcat实例,并且有两个已部署的应用程序 - '/ foo'上下文和'/ bar'上下文。连接拒绝与Tomcat 7

在处理对'/ foo'的请求期间,我们对'/ bar'(用于授权)执行HTTP请求,并且此处总是有一个异常 - ConnectException:ConnectionRefused。

如果我通过浏览器或运行在我的本地PC上的代码连接到'/ bar',那么所有功能都可以正常工作。另外,如果我从服务器(在处理请求到'/ foo'期间)连接到位于不同位置的主机,则所有内容也都按预期工作。它看起来像Tomcat以某种方式过滤来自同一主机的传入连接。有人知道该怎么办?

+0

跨站脚本问题,也许? – duffymo

+0

dyffymo,感谢您的快速回复!这两个处理程序都位于同一个站点上。我请求使用Java。在跨站点问题下你是什么意思? –

+0

谷歌“跨站点脚本”:https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) – duffymo

回答

2

“连接被拒绝”消息意味着某些东西无法在传输级别打开网络连接。这很可能意味着您试图与之通话的服务不会侦听连接尝试中使用的特定IP和端口号上的新连接。

检查:

  1. 这是被拒绝的请求使用正确的IP和端口号。
  2. 您的tomcat服务已正确配置为侦听该IP和端口。

请记住,您的系统可能有多个IP地址,并且您需要侦听您希望使用的每个IP地址。另外请记住,“本地主机”通常是不同的IP地址。

然后,如果既没有上述的的问题是:

  1. 如果存在网络级或本地防火墙阻断通信的可能性,检查。
  2. 如果由于复杂的虚拟联网造成“奇怪”的可能性,请检查。

它看起来像Tomcat以某种方式过滤来自同一主机的传入连接。

Tomcat不会像那样“过滤”。但是很有可能你没有配置tomcat来监听请求。检查“server.xml”文件以查看是否已正确配置。


FWIW - 我不认为这是Tomcat7 CSRF过滤器。根据文档,这将返回一个HTTP响应。实际上,我看不出接收Tomcat内部的任何东西是否可以通过任何方式产生“连接被拒绝”状态,而不是首先监听连接。

+0

自1998年以来,防火墙并未发出拒绝连接。 – EJP

+0

@EJP - 这取决于谁实施了防火墙。你绝不应该低估某人做错事的可能性。 –

1

拒绝连接肯定意味着网络问题。其中一个潜在的原因是你的应用程序尝试使用http header“host”值等来建立连接,并且在通常情况下,header中的“host”值不包含字符串8080内的端口-BUT-tomcat,Jelastic在端口8080上运行,所以你可以尝试连接到你的第二个应用程序强制指定端口8080或联系你的支持,并要求他们设置iptables规则,将所有请求(在tomcat容器内)从80到8080端口重定向。

+0

'拒绝连接'是一个TXP条件。它在HTTP头之前,因此与HTTP头无关。 – EJP

+0

这工作!我不知道为什么它被拒绝。 – bluevoid