在apache后面使用java / GWT的站点反向无法正常工作

时间:2013-10-31 23:35:04

标签: java ajax apache gwt reverse-proxy

也许有人可以帮我这个? 我有一个网站,在互联网上被称为“www.mydomain.com”。这样的网络服务器,我无法触摸或改变。在BlueCoat反向代理的内部,该站点称为www.mydomain-internal.local。 目前该站点位于BlueCoat反向代理的后面,该代理工作正常,但我希望它将它置于Apache反向代理之后,以便稍后使用Mod_Sec进行配置(但不是当前设置的一部分)。 在使用ZAP(之前的Paros)查看时,我发现该站点正在运行java脚本。 当我把客户端放在我的Apache反向代理的前面(互联网端)时,一切似乎都有效(我甚至得到一条消息,该网站正在加载30%到60%)但最后,在显示完整内容之前,我显示以下错误:

  

“已安装新版本的应用程序,请重新加载   本页使用“CTRL + F5”“。

同样使用ZAP,我可以清楚地看到_utmautmz cookie在BlueCoat后面写在客户端,但不是在Apache反向代理之后。

我也看到了错误

  

“// EX [2,1,[” com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException / 3936916533" ,“类型   '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 个答案:

答案 0 :(得分:1)

IncompatibleRemoteServiceException通常意味着GWT前端(javascript)尝试通过ajax调用与不兼容的后端(java servlet容器)进行通信。如果您以某种方式混合服务器上的前端和后端版本,这当然会发生。

如果浏览器使用的是旧版前端javascript的缓存版本而不是下载更新版本,则升级后也会发生这种情况。如果刷新浏览器页面后仍然出现该错误,则可能意味着服务器中的缓存配置不适合GWT。换句话说,服务器没有设置正确的响应标头来告诉浏览器哪些文件可以缓存,哪些文件永远不能缓存。这对GWT正常工作很重要。

所以在你的情况下,也许在BlueCoat中有一些配置来设置这些头文件,并且在Apache中缺少等效的配置?基本上,您必须将服务器配置为缓存名称与模式*.cache.*匹配的文件以及从不缓存具有模式*.nocache.*的文件。有关详细信息,请参阅GWT项目站点上的Perfect Caching部分。