带有SSL的Apache背后的JSF - h:带有和不带f的命令链接:ajax

时间:2015-07-31 19:11:25

标签: apache jsf ssl primefaces commandlink

[修改] - 感谢您的评论。我已经尝试相应地调整我的问题,并根据提供的建议添加了一些其他信息。

我有一个在JBoss AS7上运行的JSF Web应用程序,我在SSL上使用Apache(端口443)。 Apache和JBoss在同一台机器上运行,并在清晰的情况下进行通信。通过HTTP使用反向代理转发规则。通过这个设置,我观察到点击通过JSF标签<h:commandLink>创建的任何链接(即没有<f:ajax>,并且总是有一个真正的支持bean操作方法,在执行一些业务逻辑之后返回带有?faces-redirect=true后缀的结果会看到页面重定向失败,因为https方案已被删除并替换为http

如果我用<h:commandLink>替换<h:commandLink><f:ajax/></h:commandLink>的所有实例,则此重定向问题就会消失 - 即https方案将保留在生成的重定向URL中。

任何人都可以向我解释我在观察什么,以及&#34;引擎盖下&#34;在这种情况下,非ajax表单提交和ajax提交之间的区别可能是什么?

其他信息:

我的Apache反向代理规则:

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>

ProxyPass / http://localhost:8080/ timeout=1800
ProxyPassReverse / http://localhost:8080/

Firefox中的Web控制台显示了ajax表单提交和非ajax表单提交HTTP请求之间的区别:

Ajax通过<h:commandLink><f:ajax/></h:commandLink>

提交

我在https上看到了预期页面的GET请求(我无法发布截屏)

通过<h:commandLink/>提交非ajax

非ajax版本首先POST回https上的同一页面(预期),其中302状态代码&#39;暂时移动&#39;然后从http上的操作方法重定向到目标页面。

http

上的GET重定向失败之前,POST的HTTP标头中的位置

这是一个屏幕截图。 POST的位置值显示为GET请求的网址,位于http而不是https

enter image description here

我想我已经有点&#34;在引擎盖下&#34;在此刻。由于<f:ajax>方法达到了预期的效果,我很高兴不管这一点。似乎至少有一些其他JSF帖子与此类事物相关(这里是我允许发布的单个URL):

JSF redirects from HTTPS to HTTP

也许需要基于ajax的方法来保存来自客户端的URL中的方案?

谢谢,

-Andy

0 个答案:

没有答案