2013-10-31 21 views
0

也許有人可以幫我解決這個問題嗎? 我有一個在互聯網上被稱爲「www.mydomain.com」的網站。這樣的網絡服務器,我不能碰或改變。在BlueCoat反向代理的內部,該網站被稱爲www.mydomain-internal.local。 目前該網站位於一個BlueCoat反向代理的後面,該代理工作正常,但我希望它可以將它帶回Apache反向代理,稍後使用Mod_Sec進行配置(但不是當前設置的一部分)。 當用ZAP(之前的Paros)看時,我看到該網站正在運行Java腳本。 當我將客戶端放在我的Apache反向代理的前端(互聯網端)時,一切似乎都正常(我甚至會得到一個消息,即該網站正在加載30%到60%),但最終在顯示完整內容之前,我得到顯示以下錯誤:使用java/GWT後面的apache反向工作不正常的站點

「的應用程序的新版本已經安裝,請重新加載 使用此頁‘CTRL + F5’」

與ZAP

此外,我可以清楚地看到。和utmz cookie在BlueCoat後面寫在客戶端,但不在Apache反向代理後面。

我還看到一個錯誤

「//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","Type 「country.company .shared.rpc.GetCollection'不可分配給 'com.google.gwt.user.client.rpc.IsSerializable',並且沒有 自定義字段序列化程序。爲了安全起見,這種類型將不會被 deserialised。」],0,5]」

當我看到解決這個錯誤,我看到這個錯誤應該可以解決,通過在Web服務器上修改代碼,之前它可以在一個反向代理之後工作,但我認爲在我的情況下,我的apache配置中的其他內容是錯誤的,因爲該站點運行在Bluecoat反向代理(基本上也是依賴於Apache) 我在apache上的配置是如下:

<VirtualHost *:80> 
ServerName www.mydomain-internal.local 
#ProxyRequests On 
#ProxyVia On 
#<Proxy *> 
# Order deny,allow 
# Allow from all 
#</Proxy> 
    ProxyPass/http://www.mydomain.com/PDF/ 
    ProxyPassReverse/http://www.mydomain.com/ 
# ProxyPass/ajp://www.mydomain.com/PDF/ 
# ProxyPassReverse/ajp://www.mydomain.com/ 
# ProxyPassReverseCookiePath /PDF/  
# ProxyPassReverseCookieDomain www.mydomain-internal.local www.mydomain.com 
# CacheDisable http://www.mydomain-internal.local/ 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.mydomain-internal\.local$ 
RewriteRule /foo(.*)$ http://www.mydomain.com/$1 [P,L] 
</VirtualHost> 

有人可以幫助我,以一種方式,我可以在Apache上單獨進行修改,而且我的網站將工作?

回答

1

IncompatibleRemoteServiceException通常意味着GWT前端(javascript)試圖通過ajax調用與不兼容的後端(java servlet容器)進行通信。當然,如果你以某種方式在服務器上混合了前端和後端版本,這當然會發生。

如果瀏覽器正在使用舊版前端JavaScript的緩存版本,而不是下載更新版本,那麼升級後也可能會發生這種情況。如果在刷新瀏覽器頁面後仍然出現該錯誤,則可能意味着服務器中的緩存配置不適合GWT。換句話說,服務器沒有設置正確的響應頭來告訴瀏覽器哪些文件可以緩存,哪些文件不應該被緩存。這對GWT正常工作很重要。

所以在你的情況下,可能是在BlueCoat中設置了一些配置來設置這些頭文件,並且Apache中缺少等價配置?基本上,您必須配置服務器以緩存名稱與模式*.cache.*永不具有*.nocache.*模式的緩存文件相匹配的文件。欲瞭解更多信息,請參閱GWT項目網站上的Perfect Caching部分。