【发布时间】:2012-03-12 00:05:51
【问题描述】:
我在 Linux 上使用 Apache 将所有对站点的请求代理到 tomcat,这样我就可以使用虚拟主机并使用 https。我在 tomcat 中的 webapp 是 /epub 但我设置了 apache proxypass 和 proxypassreverse 以将 / 映射到 http//localhost:8081/epub/
我这样做是为了通过 facebook 登录我的网站。
(注意:这不是一个真实的站点,我必须为我在 facebook 注册的站点名称设置 /etc/hosts 和 apache 虚拟主机。)
在 tomcat server.xml 中,我将 Connector 元素设置如下:
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
proxyPort="80"
proxyName="andyssite2.com"/>
但是没有为此端口设置执行器共享线程池。
以下是不起作用的:
错误 1) 当我转到我的 loginservlet 时,我检查是否存在会话。如果不是,我创建一个并将“散列”请求参数保存为会话的属性。然后根据他们的 OAuth 服务器流程方案重定向到 facebook。当 facebook 重定向回我的 loginservlet 时,HttpSession 存在,但“hash”属性丢失了。 (我宁愿保存在会话中,也不愿保存在 cookie 中。)
错误 2) 然后我获取 facebook 用户信息的其余部分,并重定向到“/index.html”。浏览器将我的网址显示为“http://andyssite2.com/index.html#_=_”,这会导致问题,因为我的 index.html 加载的 javascript 没有准备好以某种方式发挥作用的哈希 _=_。我还尝试使用绝对 url 重定向到我的网站,并在 _=_ 的哈希上遇到了同样的问题,我的问题是是什么导致了这个 spurios 哈希被添加。
我有最新的 Centos6 apache。
安迪
【问题讨论】:
标签: apache session tomcat servlets mod-proxy