2013-05-18 59 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