在会话验证过滤器中修改URL并转发 - websphere portal 8

时间:2015-03-09 07:08:59

标签: java-ee web-applications websphere websphere-8 websphere-portal

在遵循IBM docs for friendly url的所有步骤之后,我在整个门户网站上获得了这种URL

  

http://example.com/wps/portal/account/account-login#Z7_JH56H4K0KO8C00ACRD944B2042

带有#附加值的

。我以某种方式设法清除使用JavaScript。我知道这不是一个合适的解决方案,我不满意。我完全怀疑在项目中使用的状态模式,不幸的是它写得很久,我没有它的来源。我唯一想到的是SessionValidationFilter。我能够获取请求URL,修改并可以重定向。但是我不能为每个请求重定向,因为我需要请求参数。有人请指出我正确的方向来转发会话验证过滤器的请求。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你看到的是片段标识符。在IETF中定义的RFC 1866,其中规定:

  

7.4。片段标识符

     

超文本地址中的“#”字符后面的任何字符   构成片段标识符。 ...

     

用户代理应指示锚元素,例如通过
  滚动和/或突出显示短语。

     

例如,如果基URI是“http://host/x/y.html”和用户   激活了以下标记表示的链接:

     

请参阅:附录1了解更多信息   关于香蕉的细节。

     

然后,用户代理访问由
标识的资源   http://host/x/app1.html'. ... the user agent must locate the <A>
element whose NAME attribute is
香蕉'并开始在那里航行。

您不应该在服务器的http流量中看到片段。 就我而言,它一直是Portlet的目标,Portal也希望将焦点带回来。就像你在上面看到的锚标签一样,浏览器会尝试滚动到锚点。

可以在每个portlet基础上禁用此行为。要设置的portlet首选项是wps.fragment.identifier,其值为false。您可以在portlet.xml中定义它,也可以将它作为参数添加到Portlet的config部分中。 因此,您应该使用objectid搜索Portlet并修改其设置