несколько iframes с сохранением информации на страницу перезапишут JSESSIONID?

Поиск кого-то, чтобы или подтвердить или опровергнуть мою теорию, что развертывание двух iframes, указывающих на две различных страницы с сохранением информации на том же домене, может привести к JSESSIONIDs тому, чтобы быть перезаписанным. Вот то, что я имею в виду:

Установка

  1. предположите, что у Вас есть две страницы, которые требуют, чтобы состояние HttpSession (привязка сессии) функционировало правильно - развернутый по http://www.foo.com/page1 и http://www.foo.com/page2
  2. предположите, что www.foo.com является единственным хостом, выполняющим Tomcat (6.0.20, fwiw), который использует JSESSIONID для идентификатора сессии.
  3. предположите, что эти страницы превращены в два iframe виджета, которые будут встроены в сторонние сайты: http://www.site.com/page1"/> (и/page2 соответственно)
  4. предположите там сторонний сайт, который хочет поместить оба виджета на той же странице по http://www.bar.com/foowidgets.html

Следующее состояние состязания может произойти?

  1. новый посетитель переходит к http://www.bar.com/foowidgets.html
  2. браузер начинает загружать URL в foowidgets.html включая два iframe 'src' URL
  3. потому что браузеры открывают несколько параллельных соединений против того же хоста (afaik до 6 в хромовом/и следующие случае), браузер, оказывается, одновременно выпускает запросы на http://www.foo.com/page1 и http://www.foo.com/page2
  4. Кот foo.com получает оба запроса приблизительно в то же время, называет getSession () впервые (на двух различных потоках) и лениво создает два HttpSessions и, таким образом, два JSESSIONIDs, с $Page1 значений и $Page2. Запросы также наполняют данные в соответствующие сессии (что данные потребуются, чтобы обрабатывать последующие запросы),
  5. предположите, что браузер сначала получает ответ на запрос page1. Браузер устанавливает cookie $Page1 JSESSIONID= для ХОСТА www.foo.com
  6. следующий ответ на запрос page2 получен, и браузер перезаписывает cookie JSESSIONID для ХОСТА www.foo.com с $Page2
  7. пользователь нажимает на что-то в 'page1' iframe на foowidgets.html; браузер выпускает 2-й запрос на http://www.foo.com/page1?action=doSomethingStateful. Тот запрос несет $Page2 JSESSIONID= (и не $Page1 - потому что значение cookie было перезаписано),
  8. когда foo.com получает этот запрос, он ищет неправильный экземпляр HttpSession (потому что ключ JSESSIONID является $Page2 и НЕ $Page1). Foobar!

Вышеупомянутое может произойти? Я думаю так, но ценил бы подтверждение.

Если вышеупомянутое явно возможно, каковы некоторые решения, учитывая, что мы хотели бы поддерживать несколько iframes на страницу? У нас нет твердой потребности в iframes для совместного использования того же HttpSession, хотя это было бы хорошо. Если решение все еще предусмотрит отдельный HttpSession на iframe, это - конечно - обязательно, что iframe 1 не заканчивает тем, что сослался на состояние httpSession для iframe 2 вместо собственного.

от вершины моей головы я могу думать:

  1. карта page1 и page2 к различным доменам (операция в секунду наверху)
  2. используйте перезапись URL, и никогда cookie (портит аналитику),
  3. что-нибудь еще?

большое спасибо, - nikita

6
задан Nikita 21 March 2010 в 21:07
поделиться

1 ответ

То, что вы говорите, верно, в этом смысл метода HttpServletResponse.encodeURL ().

Если страница, содержащая два iframe, находится в том же контексте, что и page1 и page2, URL-адреса в iframe должны быть закодированы с помощью этого метода или получены с помощью тега JSTL .

Он добавит JSESSIONID в URL-адрес, если cookie еще не определен.

0
ответ дан 17 December 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: