2015-07-27 3 views
1

У меня есть приложение, развернутое на tomcat 6.0.33, которое генерирует куки-файл с косой чертой (/) как один из символов в файле cookie. Теперь по какой-то причине tomcat включает значение cookie в двойные кавычки всякий раз, когда присутствует косая черта. Как я могу изменить поведение tomcat, чтобы избежать двойных кавычек, когда в моем значении cookie присутствует косая черта?Значение cookie в двойных кавычках

N.B. Я не согласен с BaluC, что это дублирующий вопрос. Я проверил другой, прежде чем я разместил его. Я специально спросил в этом вопросе, как изменить поведение tomcat для удаления кавычек. Это полностью отличается от других вопросов, на которых задается вопросом, почему в первую очередь вводятся двойные кавычки.

+0

Я также думаю, что между двумя вопросами существует совпадение, но я бы не назвал их ** точными ** дубликатами. Символ 'SPACE', упомянутый в другом вопросе, требует кодирования, в то время как' прямой косой черт (/) ', упомянутый в этом вопросе, или знак равенства (=)', который меня беспокоил, должны быть приняты ** без кодирования или кавычек ** , Фактически [tomcat 8.x] (https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html#RFC_6265_Cookie_Processor_-_org.apache.tomcat.util.http.Rfc6265CookieProcessor) теперь позволяет: символы «=» и «/» всегда разрешены в файле cookie. « –

ответ

1

Я обнаружил, что проблема связана с версией Tomcat. Процессор cookie включает значение cookie в кавычках, когда он встречает косую черту. Я обновился до Tomcat 7, и эти цитаты исчезли. Правила в отношении значения cookie ослаблены в Tomcat 7.

Я обнаружил, что даже в Tomcat 7, если в качестве значения cookie существует значение «=», Tomcat включает значение в двойные кавычки. Я преодолел это путем дальнейшей модернизации до Tomcat 8, а затем сменил его процессор cookie на Rfc6265CookieProcessor.

+0

Более конкретно, [CookieProcessor] (https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html) был представлен в Tomcat 8.0.15 вместе с двумя его реализациями: старый [LegacyCookieProcessor] (http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-coyote/8.0.15/org/apache/tomcat/util/http/LegacyCookieProcessor.java) и новый [Rfc6265CookieProcessor] (http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-coyote/8.0.15/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java) –

+0

Все еще происходит со мной в tomcat 8.3. Cookies.add (ответ, KEY, "! '() * -._ ~"); генерирует котировку на клиенте. – momomo

-2

Вы должны использовать rawurlencode(), а не urlencode() для ускорения пути. urlencode() неверно назван, это фактически для данных application/x-www-form-urlencoded, таких как строка запроса или тело запроса POST, а не для других частей URL-адреса.

+0

Я не хочу добавлять дополнительную кодировку. Я хочу, чтобы строковое значение было выписано так же, как и без ввода двойных кавычек. – user1639616

+0

Это функция, в которой yoiu хранит ваши файлы cookie, попробуйте использовать функцию rawurlencode(), и результаты будут без двойных запросов. – Adi

+0

Для косой черты не требуется кодирование URL (любого типа). –

Смежные вопросы