Заменить запятую на значение cookie
Я перевожу веб-приложение с.NET на платформу Java, и мне приходится иметь дело с устаревшим искаженным файлом cookie. Мне нужно прочитать файл cookie со значением, разделенным запятыми, и, как объяснено в этом другом вопросе, он недействителен. Когда я пытаюсь прочитать из HttpServletRequest, он дает мне только первое значение из списка через запятую.
Мой последний подход к решению этой проблемы - изменить значение cookie с сервера apache, используя mod_rewrite.
Поскольку я новичок в конфигурации Apache, я не смог правильно заменить ВСЕ запятые другим символом.
Мой лучший подход - заменить 9 запятых, или 8 запятых... или 1 запятую следующим образом:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4|%5|%6|%7|%8|%9|%10:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4|%5|%6|%7|%8|%9:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4|%5|%6|%7|%8:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4|%5|%6|%7:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4|%5|%6:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4|%5:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3|%4:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2|%3:dev.server.intranet:43200]
RewriteCond %{HTTP_COOKIE} COOKIE_NAME=(.*),(.*)
RewriteRule ^(.*)$ - [CO=COOKIE_NAME:%1|%2:dev.server.intranet:43200]
Я думаю, что это некрасиво и неполно, потому что, если список через запятую длиннее 10 значений, для полного исправления потребуется дополнительный вызов.
Я пытался повторить флаг Next [N], пока не осталось запятых, но это не сработало.
Я искал mod_headers, но думаю, что у меня та же проблема итерации.
1 ответ
Наконец я нашел решение:
RequestHeader edit* Cookie "(,)" "|"
При этом ВСЕ запятые во всех куки будут заменены на '|' персонаж.