从 GWT servlet 访问 AJP 请求数据
Accessing AJP request data from a GWT servlet
我正在尝试创建一个 GWT 应用程序来实现基于 Shibboleth 的授权。因为最终它应该在 "production mode" 中提供,我选择 运行 使用 Tomcat7 的应用程序,但是客户端连接到 Apache2,然后通过 AJP 将请求转发到 Tomcat (使用 mod_proxy_ajp
)。
为应用程序提供服务的基本任务有效。但是,我需要以某种方式访问 Shibboleth 设置的环境变量。根据 the Shibboleth documentation,如果环境变量以 AJP_
为前缀(然后删除前缀),环境变量将被转发到 Tomcat,所以我继续以这样的方式配置 Shibboleth将该前缀添加到它设置的所有环境变量中(这是有效的,正如我使用 PHP 脚本确认的那样,该脚本只打印所有环境变量)。
问题在于,当环境变量达到 Tomcat 时,环境变量不再可用作环境变量,而是应该作为 mod_proxy_ajp
documentation 短语提供 - 作为 AJP请求属性.
显然,应该使用类似
的方式访问这些类型的属性
getThreadLocalRequest().getSession().getAttribute("uid")
从 servlet 中。尽管我的 PHP 脚本列出了一个名为 AJP_uid
的环境变量,但是 returns null
以上的调用,据我所知,它应该 return 相同的值环境变量 AJP_uid
有。
可以肯定的是,我还尝试使用 AJP_uid
而不是 uid
进行上述调用,以防由于某种原因没有删除前缀,但没有成功。
我做错了什么?
正如@ThomasBroyer 提到的,我还可以直接在 getThreadLocalRequest()
返回的 HttpServletRequest
对象上调用 getAttribute
,这确实对我有用:
getThreadLocalRequest().getAttribute("uid")
returns 符合我的预期。
谢谢!
我正在尝试创建一个 GWT 应用程序来实现基于 Shibboleth 的授权。因为最终它应该在 "production mode" 中提供,我选择 运行 使用 Tomcat7 的应用程序,但是客户端连接到 Apache2,然后通过 AJP 将请求转发到 Tomcat (使用 mod_proxy_ajp
)。
为应用程序提供服务的基本任务有效。但是,我需要以某种方式访问 Shibboleth 设置的环境变量。根据 the Shibboleth documentation,如果环境变量以 AJP_
为前缀(然后删除前缀),环境变量将被转发到 Tomcat,所以我继续以这样的方式配置 Shibboleth将该前缀添加到它设置的所有环境变量中(这是有效的,正如我使用 PHP 脚本确认的那样,该脚本只打印所有环境变量)。
问题在于,当环境变量达到 Tomcat 时,环境变量不再可用作环境变量,而是应该作为 mod_proxy_ajp
documentation 短语提供 - 作为 AJP请求属性.
显然,应该使用类似
的方式访问这些类型的属性getThreadLocalRequest().getSession().getAttribute("uid")
从 servlet 中。尽管我的 PHP 脚本列出了一个名为 AJP_uid
的环境变量,但是 returns null
以上的调用,据我所知,它应该 return 相同的值环境变量 AJP_uid
有。
可以肯定的是,我还尝试使用 AJP_uid
而不是 uid
进行上述调用,以防由于某种原因没有删除前缀,但没有成功。
我做错了什么?
正如@ThomasBroyer 提到的,我还可以直接在 getThreadLocalRequest()
返回的 HttpServletRequest
对象上调用 getAttribute
,这确实对我有用:
getThreadLocalRequest().getAttribute("uid")
returns 符合我的预期。 谢谢!