从HTTP请求中删除重复的标头

时间:2014-11-22 03:30:59

标签: apache mod-rewrite reverse-proxy mod-proxy mod-headers

我使用带有mod_proxy的Apache 2.4服务器作为Tomcat服务器的HTTP反向代理。反向代理适用于Split-DNS配置,其中“server.com”可能指向实际的HTTP服务器或反向代理,具体取决于客户端的位置。

我遇到的问题是我们的客户端应用程序遇到了问题,有时它会不止一次地包含一个标题。例如,HTTP请求最终可能如下所示:

POST server.com HTTP/1.1
Some-Header: foo
Authorization: BASIC abc123
Authorization: BASIC abc123
Other-Headers: ...

如果客户端直接与Tomcat通信,但是如果它通过反向代理,则重复的头文件似乎被破坏,Tomcat最终会收到如下所示的请求:

POST server.com HTTP/1.1
Some-Header: foo
Authorization: BASIC abc123, BASIC abc123
Other-Headers: ...

我使用Wireshark检查HTTP请求,因为它们是在Client-> Proxy-> Tomcat链中发送/接收的,而Apache绝对是将两个标头“折叠”为一个组件的组件。

有没有办法以某种方式配置此行为,它既可以发送标头,也可以只发送一个标头?我不想要的是这种“坍塌”发生......

1 个答案:

答案 0 :(得分:0)

您可以使用mod_headers删除重复的标头。有关如何启用它的信息,请参阅他们的official docs

然后你可以在配置文件中添加这样的一行,这样标题的第一部分就会消失:

RequestHeader edit Authorization "^BASIC\ abc123\\,\ " ""

请告诉我这是否适合您。