Url rewriting 嵌入式Jetty-禁用外部URL的URL重写

Url rewriting 嵌入式Jetty-禁用外部URL的URL重写,url-rewriting,jetty,embedded-jetty,http-redirect,jsessionid,Url Rewriting,Jetty,Embedded Jetty,Http Redirect,Jsessionid,我在嵌入式服务器配置中使用Jetty。当客户端不接受cookie时,Jetty使用URL重写在URL本身中对会话ID进行编码(向URL添加类似于;jsessionid=xxx) 我的问题是,当我将客户端重定向(使用HTTP 302,暂时移动)到外部URL时,此URL重写会中断我重定向到的外部URL(即,URL中也存在jsessionid=xxx) 如何在嵌入式Jetty上有选择地禁用外部URL的URL重写?这是码头的臭虫吗?我使用的是Jetty 9.4.7。我还尝试设置选项org.eclipse

我在嵌入式服务器配置中使用Jetty。当客户端不接受cookie时,Jetty使用URL重写在URL本身中对会话ID进行编码(向URL添加类似于
;jsessionid=xxx

我的问题是,当我将客户端重定向(使用HTTP 302,暂时移动)到外部URL时,此URL重写会中断我重定向到的外部URL(即,URL中也存在jsessionid=xxx)


如何在嵌入式Jetty上有选择地禁用外部URL的URL重写?这是码头的臭虫吗?我使用的是Jetty 9.4.7。我还尝试设置选项
org.eclipse.jetty.servlet.SessionDomain
,但没有成功。

我最终通过挖掘jetty代码路径找到了答案。您只需启用以下init选项:

org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding=true
例如,对于嵌入式码头:

ServletContextHandler context = ...
context.setInitParameter(
    "org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding",
    "true");

有兴趣的读者注意:与此相关的代码位于
org.eclipse.jetty.server.Response::encodeURL()
(v9.4.7的第477行)。

我最终通过深入了解jetty代码路径找到了答案。您只需启用以下init选项:

org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding=true
例如,对于嵌入式码头:

ServletContextHandler context = ...
context.setInitParameter(
    "org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding",
    "true");
请注意:与此相关的代码位于
org.eclipse.jetty.server.Response::encodeURL()
(v9.4.7的第477行)