C: URL не добавляет jsessionid, когда куки отключены - PullRequest
4 голосов
/ 13 января 2011

Я пытался:

<c:url value="/web/pclub/userprofile" var="test">
    <c:param name="userid" value="${user.id}"/>
</c:url>
${test}

Но когда я проверяю страницу с отключенными файлами cookie, jsessionid не добавляется. Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

3 голосов
/ 13 января 2011

jsessionid добавляется только в том случае, если cookie-файлы отключены и , когда сеанс был создан на стороне сервера (и, таким образом, на стороне сервера необходимо как-то уведомить об этом клиента, для чегоcookie будет подходом по умолчанию).Если сеанс не был создан, то нет смысла добавлять jsessionid.

. Попробуйте добавить следующую строку в начало вашего JSP, по крайней мере, до того, как будет вызвана строка <c:url>.Он не только печатает / отлаживает идентификатор сеанса для вас, но также неявно создает сеанс, если это еще не сделано.

${pageContext.session.id}

Делайте это только для целей тестирования.Если это работает, то причина вашей проблемы в том, что сеанса просто не было.Просто оставь все как есть.Нет необходимости создавать сеанс без необходимости.Для случая, когда есть сеанс и браузер не поддерживает куки, c:url будет работать нормально.


Кстати, чтобы проверить, действительно ли куки отключены, отследите заголовки запроса Жар-баг .Если в запросе нет заголовка Cookie, даже если сервер установил заголовок Set-Cookie в ответе, это означает, что файлы cookie действительно отключены на стороне клиента.

0 голосов
/ 13 января 2011

Я думаю, что BalusC прав, но чтобы принудительно создать сеанс на сервере, вы можете добавить страницу директивы в верхней части JSP, например:

<%@ page session="true" %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...