Jetty 7 не позволит мне настроить путь файла cookie сеанса

Используя 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, но пристань устанавливает путь для файла cookie сеанса @ /context. Это предотвращает доступ браузера к файлу cookie, поскольку фактический путь к контексту не используется. Мне нужно переопределить настройку Jetty по умолчанию, чтобы установить файл cookie для контекста и установить путь в корне ( / ).

В моем файле webdefault.xml Jetty у меня есть следующее, что частично работает:

<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. Независимо от того, какое значение я установил... он отказывается устанавливать cookie по любому пути, кроме /context.

Это сводило меня с ума, поэтому любая помощь будет принята с благодарностью.


person Bob Obringer    schedule 18.04.2010    source источник


Ответы (2)


Похоже, вы столкнулись с этой ошибкой, из-за чего Jetty всегда использует контекстный путь для файлов cookie сеанса.

person Martin    schedule 04.05.2010

Я не так знаком с Jetty, но похоже, что в какой-то момент клиент имеет доступ к /Context, где создается файл cookie. Я бы дважды проверил код и убедился, что ваш файл cookie не создается в /Context вашего сайта. Неважно, что ваш пользователь подключается к корню домена, файл cookie не смотрит, откуда подключается ваш пользователь, он смотрит, откуда создается файл cookie.

Если ваш файл cookie сгенерирован из /Context, ваш пользователь может даже получить доступ к htp://foobar.domain.com, он все равно будет выглядеть так, как будто он исходит из /Context, потому что именно из него он сгенерирован. Единственный способ обойти это — создать файл cookie на корневом уровне, а не на страницах из области /Context. Это делается для того, чтобы монстры файлов cookie не могли украсть информацию о файлах cookie с сайтов, которым они не принадлежат (если вы размещаете свой сайт на foo.yahoo.com и создаете файл cookie, это сохранит другой сайт, которым вы не владеете (bar.yahoo .com) при просмотре вашего файла cookie. Это сделано намеренно.

person Phillip    schedule 19.04.2010