无法在网址中删除#。{jsessionid}

时间:2012-10-08 08:55:19

标签: jsf-2 servlet-3.0 jsessionid prettyfaces jetty-8

到目前为止,我尝试了两种方法:
-1。添加到web.xml:

<session-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

-2。使用漂亮的面孔,添加到pretty-config.xml:

<rewrite match="(?i)^(.*)#\.\w+(.*)" substitute="$1$2" redirect="301"/>

-3。 Jetty具体。添加到web.xml:

<context-param>
    <param-name>org.eclipse.jetty.servlet.SessionIdPathParameterName</param-name>
    <param-value>none</param-value>
</context-param>

没有任何帮助。 另外我无法理解,“#。{jsessionid}”和“jsessionid = {jsessionid}”格式之间有什么区别(其中{jsessionid}是一些看似哈希的字符串)?

EDIT1:
它看起来像fragment-id。他在我的所有网址上做了什么?

2 个答案:

答案 0 :(得分:0)

这个哈希不是jsessionid。它附加了addthis跟踪。要禁用它,请使用:

<script type="text/javascript">
var addthis_config = {
"data_track_addressbar" : false
};
</script>

我不知道,可能最好删除这个问题,因为它有点愚蠢。

答案 1 :(得分:0)

除了alehro所说的,//重写[http://ocpsoft.org/rewrite/]可能更适合您尝试通过从URL和其他此类自定义任务中删除会话ID。配置更具声明性和强大功能,但也更冗长。

以下是使用//重写的方法。

@Override
public Configuration getConfiguration(final ServletContext context)
{
   return ConfigurationBuilder.begin()
      .addRule()
        .when(Direction.isInbound()
           .and(URL.matches("{p}{sessionID}{s}")
              .where("sessionID").matches("#\\.\\w+"))))
        .perform(Redirect.temporary("{p}{s}"));
}      

网址参数默认为匹配.*,因此前缀和后缀(p)和(s)不需要额外的配置。