【问题标题】:Embedded Jetty - Disable URL rewriting for external URLsEmbedded Jetty - 禁用外部 URL 的 URL 重写
【发布时间】:2018-05-12 00:05:03
【问题描述】:

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

我的问题是,当我将客户端(使用 HTTP 302,临时移动)重定向到外部 URL 时,此 URL 重写会破坏我重定向到的外部 URL(即 ;jsessionid=xxx 是也出现在 URL 中)。

如何在嵌入式 Jetty 上选择性地禁用外部 URL 的 URL 重写?这是Jetty的错误吗?我正在使用码头 9.4.7。我也尝试设置选项org.eclipse.jetty.servlet.SessionDomain,但无济于事。

【问题讨论】:

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


    【解决方案1】:

    我终于通过深入研究 Jetty 代码路径找到了答案。您只需要启用以下初始化选项:

    org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding=true
    

    以嵌入式 Jetty 为例:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2020-11-01
      • 2016-11-27
      相关资源
      最近更新 更多