Сейчас я использую Tomcat 8.0.49 с дополнительными параметрами в файле setenv:
-Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE=true -
Dorg.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER=false -
Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true
и все работает нормально - я могупоставить символы '@
' или '=
' в значения куки, однако я хочу обновить Tomcat до версии 9, но в tomcat 8.5.0
'Парсер cookie HTTP по умолчанию былизменено на org.apache.tomcat.util.http.Rfc6265CookieProcessor '
, и после обновления моего Tomcat все значения cookie содержат' =
'или' @
'null
. Чтобы справиться с этим в context.xml, я изменил процессор cookie, чтобы использовать LegacyCookieProcessor
, но после этого значения cookie превращаются в указатель. Вместо 'assss@gmail.com' у меня есть 'assss'.
Как я могу это сделать?
Параметры allowEqualsInValue
и ALLOW_HTTP_SEPARATORS_IN_V0
всегда установлены на true
в setenv
.
Что также интересно в документации Tomcat: «Процессор cookie RFC 6265 обычно более снисходительный, чем унаследованный анализатор cookie. В частности:
The '=' and '/' characters are always permitted in a cookie value.
Name only cookies are always permitted.
The cookie header is always preserved.
Для меня это неправда. Когда значение моего cookie содержит '=', я вижу ноль в своем коде Java.
С уважением