【问题标题】:Jetty 7 will not allow me to customize a session cookie pathJetty 7 不允许我自定义会话 cookie 路径
【发布时间】:2011-02-09 12:07:26
【问题描述】:

使用 Jetty 7.0.2,我无法设置自定义会话 cookie 路径。

我在同一台服务器上托管多个站点,使用 apache 将请求代理到适当的上下文。 (将 http 替换为 htp,因为 stackoverflow 认为我的多个链接可能是垃圾邮件)

<VirtualHost *:80>
  ServerName context.domain.com

  ProxyRequests On
  ProxyPreserveHost Off

  <Proxy *:80>
    Order deny,allow
    Allow from 127.0.0.1
  </Proxy>

  ProxyPass / htp://localhost:8080/context/
  ProxyPassReverse / htp://localhost:8080/context/

  <Location />
    Order allow,deny
    Allow from all
  </Location>
</VirtualHost>

Jetty 在同一台服务器的 8080 端口上运行,我的上下文可用 @/context

用户访问应用程序@htp://context.domain.com 但jetty 正在设置会话cookie 的路径@/context。这可以防止浏览器访问 cookie,因为没有使用上下文的实际路径。我需要覆盖 Jetty 的默认设置来设置上下文的 cookie,并将路径设置在根目录 ( / )。

在我的 Jetty 的 webdefault.xml 中,我有以下内容,它正在部分工作:

<context-param>
  <param-name>org.eclipse.jetty.servlet.SessionCookie</param-name>
  <param-value>CustomCookieName</param-value>
</context-param>
<context-param>
  <param-name>org.eclipse.jetty.servlet.SessionPath</param-name>
  <param-value>/</param-value>
</context-param>

cookie 已使用自定义名称正确设置,但未设置 SessionPath。无论我将值设置为什么......它都拒绝在除 /context 之外的任何路径设置 cookie。

这让我发疯了,所以任何帮助都将不胜感激。

【问题讨论】:

    标签: session cookies jetty


    【解决方案1】:

    听起来你点击了this bug,导致 Jetty 始终使用会话 cookie 的上下文路径。

    【讨论】:

      【解决方案2】:

      我对 Jetty 不太熟悉,但听起来客户端在某些时候正在访问 /Context,这是生成 cookie 的位置。我会仔细检查代码并确保您的 cookie 没有在您网站的 /Context 中生成。您的用户连接到域根并不重要,cookie 不会查看您的用户连接的位置,它会查看 cookie 的生成位置。

      如果您的 cookie 是从 /Context 生成的,那么您的用户甚至可以访问 htp://foobar.domain.com 它仍然看起来像是来自 /Context 因为它是从那里生成的。解决它的唯一方法是在根级别而不是在 /Context 区域的页面上生成 cookie。这是为了防止 cookie 怪物从不属于它的站点窃取 cookie 信息(如果您在 foo.yahoo.com 上的站点上托管并创建一个 cookie,这将保留一个您不拥有的不同站点(bar.yahoo .com)查看您的 cookie。这是设计使然。

      【讨论】:

        猜你喜欢
        • 2019-10-02
        • 2011-04-28
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-27
        • 1970-01-01
        相关资源
        最近更新 更多