如何将 HTTP header 转换为另一个?

How to convert a HTTP header into another?

我使用 Apache 作为 Tomcat 的代理。

我必须从传入的 HTTP header 中提取一个字段并创建一个新的 header 以发送到代理 Tomcat。更具体地说:

重要提示: 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 可用于代理请求。