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

时间:2017-11-28 13:47:56

标签: url-rewriting jetty embedded-jetty http-redirect jsessionid

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

我的问题是,当我将客户端(使用 HTTP 302,暂时移动)重定向到外部URL时,此URL重写会破坏我重定向到的外部URL(即{{1} }也出现在网址中。

如何有选择地禁用嵌入式Jetty上的URL重写外部URL?这是Jetty的错误吗?我正在使用Jetty 9.4.7。我也尝试设置选项;jsessionid=xxx,但没有用。

1 个答案:

答案 0 :(得分:2)

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

org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding=true

例如对于嵌入式Jetty:

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

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