Url rewriting 嵌入式Jetty-禁用外部URL的URL重写
我在嵌入式服务器配置中使用Jetty。当客户端不接受cookie时,Jetty使用URL重写在URL本身中对会话ID进行编码(向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
;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行)