我需要通過過濾 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
請建議如何使用正則運算式過濾字串(組)并將其作為逗號分隔的組作為回應標頭發送回。
uj5u.com熱心網友回復:
這是一個挑戰,我必須首先承認。
在研究了一個多小時的官方檔案后,我想出了這個解決方案。請閱讀我的行內評論以了解解決方案:
# copy header named group from request to response
Header echo "^group$"
# use regex to remove all comma separated substrings
# as long as those substrings don't contain string MYROLE
Header edit* group "(?:^|,)(?![^,]*?MYROLE)[^,] " ""
# remove first comma if it exists
Header edit group "^," ""
在我的本地 Apache 上,我使用命令列對其進行了測驗,curl
結果如下:
curl -H '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' -H 'mygroup: foobar' -IL 'http://localhost/'
HTTP/1.1 200 OK
Date: Wed, 15 Jun 2022 19:15:19 GMT
Server: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/8.1.6
X-Powered-By: PHP/8.1.6
group: DC=be:CN=(A) MYROLE - BO - TC BO Admin,DC=be:CN=(A) MYROLE - BO - ABO,DC=be:CN=(A) MYROLE - BO - TBO,DC=be:CN=(A) MYROLE - BO - B and C
Content-Type: text/html; charset=UTF-8
RegEx 演示 2nd Header 命令中使用的正則運算式
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496400.html
下一篇:帶有Bash的CSV中的空值