Заменить запятую на значение 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 "(,)" "|"

При этом ВСЕ запятые во всех куки будут заменены на '|' персонаж.

Другие вопросы по тегам