заменить запятую на значение куки

1

Я перемещаю webapp с платформы.NET на Java, и мне приходится иметь дело с устаревшим malformed 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, но я думаю, что у меня одна и та же проблема.

Теги:
cookies
mod-rewrite
mod-headers

1 ответ

1
Лучший ответ

Наконец, я нашел решение:

RequestHeader edit* Cookie "(,)" "|"

При этом все запятые во всех файлах cookie будут заменены на '|' персонаж.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню