【发布时间】:2022-06-16 00:42:07
【问题描述】:
我需要通过过滤 apache 中的请求标头字符串来发送响应标头。要过滤字符串,可以使用正则表达式。
echo 命令可以很好地从请求标头发送响应标头。
使用 echo 命令的参考 URL https://httpd.apache.org/docs/current/mod/mod_headers.html#page-header
例如
Header echo ^group
现在我们需要用正则表达式过滤组。
例如
Header echo ^group <filter group with regular expression>
需要使用的正则表达式为:/(?<=,)[^,]*MYROLE[^,]+(?=,)/gm
组字符串示例:"AV=en:CN=(A) MYROLE - Application, AV=en:CN=(A) DATA - Application";
我尝试了下面给出的语法,但它不起作用
Header echo group "%{HTTP:group}i m#/(?<=,)[^,]*MYROLE[^,]+(?=,)/#"
预期的请求和响应转储。
请求
HTTP/1.1 200 OK
Cache-Control: private
group: OU=Groups Azure Virtual Desktop,OU=PROD,DC=prod,DC=test,DC=be:CN=(A) MYROLE - BO - TC BO Admin,OU=Groups XYZ Application Entitlements,OU=PROD,DC=prod,DC=test,DC=be:CN=(A) MYROLE - BO - ABO,OU=Groups XYZ Application Entitlements,OU=PROD,DC=prod,DC=test,DC=be:CN=(A) MYROLE - BO - TBO,OU=Groups XYZ Application Entitlements,OU=PROD,DC=prod,DC=test,DC=be:CN=(A) MYROLE - BO - B and C,OU=Groups XYZ Application Entitlements,OU=PROD,DC=prod,DC=test,DC=be:CN=(C) Adobe Fullstack Engineers
预期响应
HTTP/1.1 200 OK
Cache-Control: private
group: DC=be:CN=(A) MYROLE - BO - TC BO Admin,DC=be:CN=(A) MYROLE - BO - ABO,DC=be:CN=(A) MYROLE - BO - TBO,CN=(A) MYROLE - BO - B and C
请建议如何使用正则表达式过滤字符串(组)并将其作为逗号分隔的组作为响应头发送回。
【问题讨论】:
-
请提供请求标头的转储以及您打算发回的预期响应标头
-
感谢您的回复,用请求和响应转储更新了问题。