如何将 HTTP header 转换为另一个?
How to convert a HTTP header into another?
我使用 Apache 作为 Tomcat 的代理。
我必须从传入的 HTTP header 中提取一个字段并创建一个新的 header 以发送到代理 Tomcat。更具体地说:
- 我的 Apache 在 header 中收到一个 LDAP DN 值,即:
CN=Jeff Smith/OU=Sales/DC=Fabrikam/DC=COM
- 我需要提取令牌
OU=Sales
并将值 Sales
转发到新的 header
重要提示: Tomcat 应用程序。是商业的,无法解析第一个 header。这就是我必须这样做的原因。
我用谷歌搜索了 mod_rewrite 和 mod_header,但现在我 运行 没有灵感了...非常欢迎帮助!
我回答我的问题是因为今天一位同事找到了一个(很棒的)解决方案。
假设我传入的header命名为USER-DN
,需要生成SERVICE_NAME
我将按如下方式收到它(在 HTTP 请求中,与其他 HTTP headers):
...
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
USER-DN: CN=Jeff Smith/OU=Sales/DC=Fabrikam/DC=COM
...
抓取并生成SERVICE_NAME
,这是我们在Apache conf中添加的:
SetEnvIf USER-DN ^.*/CN=.*/OU=([^/]+)/.* SVC_VALUE=
RequestHeader add SERVICE_NAME %{SVC_VALUE}e
现在新的 header SERVICE_NAME
可用于代理请求。
我使用 Apache 作为 Tomcat 的代理。
我必须从传入的 HTTP header 中提取一个字段并创建一个新的 header 以发送到代理 Tomcat。更具体地说:
- 我的 Apache 在 header 中收到一个 LDAP DN 值,即:
CN=Jeff Smith/OU=Sales/DC=Fabrikam/DC=COM
- 我需要提取令牌
OU=Sales
并将值Sales
转发到新的 header
重要提示: Tomcat 应用程序。是商业的,无法解析第一个 header。这就是我必须这样做的原因。
我用谷歌搜索了 mod_rewrite 和 mod_header,但现在我 运行 没有灵感了...非常欢迎帮助!
我回答我的问题是因为今天一位同事找到了一个(很棒的)解决方案。
假设我传入的header命名为USER-DN
,需要生成SERVICE_NAME
我将按如下方式收到它(在 HTTP 请求中,与其他 HTTP headers):
...
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
USER-DN: CN=Jeff Smith/OU=Sales/DC=Fabrikam/DC=COM
...
抓取并生成SERVICE_NAME
,这是我们在Apache conf中添加的:
SetEnvIf USER-DN ^.*/CN=.*/OU=([^/]+)/.* SVC_VALUE=
RequestHeader add SERVICE_NAME %{SVC_VALUE}e
现在新的 header SERVICE_NAME
可用于代理请求。