WebSphere Portal 8.5 + 操作 URL + 在上下文路径中包含 cookie 值
WebSphere Portal 8.5 + Action URL + contains cookie value in context path
最近我们从 WPS v7.0 升级到了 v8.5。我们更新了 portlet 和部分代码,使它们兼容并在新平台 (v8.5) 上运行。但是,我们发现了一些特殊的行为,正在寻找一些信息。开始了:
前提:这些 portlet 以代码形式为区域使用 cookie,例如 oh 用于俄亥俄州,ny 代表纽约等
在 WPS v7.0 的早期版本中,生成的 portlet 操作 URL 的格式为:
http://<host>:<port>/wps/portal/!ut/p/b1/04_SjzQ0M....
等等。
现在,在新平台 (v8.5) 上,URL 与以下形式略有不同。
http://<host>:<port>/wps/portal/oh/!ut/p/z1/pZBNCsIwE...
(以俄亥俄为例)
http://<host>:<port>/wps/portal/ny/!ut/p/z1/pZBNCsIwE...
(以纽约为例)
现在进入特殊部分。 8.5 上的 URL 包含 cookie 值(在本例中:oh for Ohio)作为上下文的一部分。
我跟踪并检查了 ActionURL
标记和其他 URL 实现 类 的日志,例如 BasicURLImpl, BaseURLImpl, PortletURLProviderImpl
,但没有找到任何关于 cookie 值的线索在生成操作时成为操作的一部分 url。
编辑:
我能够解码 URL(在 post 之后:WebSphere Portal decode url) and saw that the cookie values are coming up as shared parameters (global) (ref: IBM WebSphere Portal Remote State Service and Fragment Service),我认为它们是 public 渲染参数。下面是解码 url 输出的示例摘录:
<shared-parameters id="global">
<shared-parameter nsuri="http://www.ibm.com/xmlns/prod/websphere/portal/publicparams" localpart="path-info">
<value>oh</value>
</shared-parameter>
</shared-parameters>
在这一点上,我的观点是 cookie 值以某种方式设置为 public 呈现参数,但不确定如何设置。
我们的目标是不将 cookie 值作为 URL 的一部分。任何有关设置、配置或任何有助于获得首选结果的线索都将受到赞赏。
谢谢。
通过操作URL 创建进行调试后,观察到 cookie 值作为友好路径在下面观察到的路径中传递。到目前为止,还不知道这些值是如何作为友好路径传递的。
PortletURLImpl
.provider
.request (PortletRequestWRapper).
.request(ExtendedLocaleRequest).
.request(ExtendedLocaleRequest).
.request(FriendlySelectionHttpServletRequestWrapper)
.friendlyPath= /oh
.contextPath = /wps
.originalPathInfo = /
.pathInfo = /
.servletPath= /portal
.request (MappingURLRequestWrapper)
.contextPath = /wps
.servletPath= /portal
.originalPathInfo = /oh
最后,通过在 WAS 管理控制台中添加以下 属性 来解决问题:
在资源环境提供者 > WP ConfigService > 自定义属性
添加属性
姓名:friendly.pathinfo.enabled
值:假
说明:URL 映射和友好 URL 是否可以包含内容项的路径信息作为 URL 的一部分。
最近我们从 WPS v7.0 升级到了 v8.5。我们更新了 portlet 和部分代码,使它们兼容并在新平台 (v8.5) 上运行。但是,我们发现了一些特殊的行为,正在寻找一些信息。开始了:
前提:这些 portlet 以代码形式为区域使用 cookie,例如 oh 用于俄亥俄州,ny 代表纽约等
在 WPS v7.0 的早期版本中,生成的 portlet 操作 URL 的格式为:
http://<host>:<port>/wps/portal/!ut/p/b1/04_SjzQ0M....
等等。
现在,在新平台 (v8.5) 上,URL 与以下形式略有不同。
http://<host>:<port>/wps/portal/oh/!ut/p/z1/pZBNCsIwE...
(以俄亥俄为例)
http://<host>:<port>/wps/portal/ny/!ut/p/z1/pZBNCsIwE...
(以纽约为例)
现在进入特殊部分。 8.5 上的 URL 包含 cookie 值(在本例中:oh for Ohio)作为上下文的一部分。
我跟踪并检查了 ActionURL
标记和其他 URL 实现 类 的日志,例如 BasicURLImpl, BaseURLImpl, PortletURLProviderImpl
,但没有找到任何关于 cookie 值的线索在生成操作时成为操作的一部分 url。
编辑: 我能够解码 URL(在 post 之后:WebSphere Portal decode url) and saw that the cookie values are coming up as shared parameters (global) (ref: IBM WebSphere Portal Remote State Service and Fragment Service),我认为它们是 public 渲染参数。下面是解码 url 输出的示例摘录:
<shared-parameters id="global">
<shared-parameter nsuri="http://www.ibm.com/xmlns/prod/websphere/portal/publicparams" localpart="path-info">
<value>oh</value>
</shared-parameter>
</shared-parameters>
在这一点上,我的观点是 cookie 值以某种方式设置为 public 呈现参数,但不确定如何设置。
我们的目标是不将 cookie 值作为 URL 的一部分。任何有关设置、配置或任何有助于获得首选结果的线索都将受到赞赏。
谢谢。
通过操作URL 创建进行调试后,观察到 cookie 值作为友好路径在下面观察到的路径中传递。到目前为止,还不知道这些值是如何作为友好路径传递的。
PortletURLImpl
.provider
.request (PortletRequestWRapper).
.request(ExtendedLocaleRequest).
.request(ExtendedLocaleRequest).
.request(FriendlySelectionHttpServletRequestWrapper)
.friendlyPath= /oh
.contextPath = /wps
.originalPathInfo = /
.pathInfo = /
.servletPath= /portal
.request (MappingURLRequestWrapper)
.contextPath = /wps
.servletPath= /portal
.originalPathInfo = /oh
最后,通过在 WAS 管理控制台中添加以下 属性 来解决问题:
在资源环境提供者 > WP ConfigService > 自定义属性
添加属性
姓名:friendly.pathinfo.enabled
值:假
说明:URL 映射和友好 URL 是否可以包含内容项的路径信息作为 URL 的一部分。