我在嵌入式服务器配置中使用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
,但没有用。
答案 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)。