java - 替换 cookie 值上的逗号字符

标签 java apache mod-rewrite cookies mod-headers

我正在将一个 Web 应用程序从 .NET 迁移到 Java 平台,并且我必须处理遗留的格式错误的 cookie。我需要读取带有逗号分隔值的 cookie,如 this other question 中所述。这是无效的。当我尝试从 HttpServletRequest 读取时,它只给出逗号分隔列表中的第一个值。

解决这个问题的最后一个方法是使用 mod_rewrite 修改 apache 服务器的 cookie 值。

由于我是 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 但我认为我遇到了同样的迭代问题。

最佳答案

最后我找到了解决方案:

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

这样,所有 cookie 中的所有逗号都将被替换为“|”特点。

关于java - 替换 cookie 值上的逗号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240210/

相关文章:

Java 并发 : Exclusive Queue Problem

java - 禁用 XMLInputFactory 中的功能安全处理

apache - 规范 URL 和 URL 重写

.htaccess - Mod_重写: Force https besides specific page

javascript - CodeIgniter 和 Javascript url 重写冲突

Apache 重写异常以不包含特定目录

java - Play Framework 中子项目类中的包名称(命名空间)

java - java中的类和方法

apache - 如何使用 htaccess 避免重复的内容映射 url

performance - Apache 可以处理多少连接/多少带宽?