0

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

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

同样使用 ZAP,我可以清楚地看到,在 BlueCoat 后面时,_utmautmzcookie 是在客户端写入的,但在 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' 并且没有自定义字段序列化程序。出于安全考虑,不会反序列化此类型。”],0,5]"

当我想解决这个错误时,我发现应该通过修改网络服务器上的代码来解决这个错误,然后它才能在反向代理后面工作。但我认为在我的情况下,我的 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 上进行修改并且我的网站可以正常工作吗?

4

1 回答 1

1

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

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

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

于 2013-11-01T00:44:16.800 回答