2014-11-22 6 views
0

mod_proxy가있는 Apache 2.4 서버를 Tomcat 서버의 HTTP 역방향 프록시로 사용하고 있습니다. 역방향 프록시는 Split-DNS 구성에서 작동합니다. 여기서 "server.com"은 클라이언트가있는 위치에 따라 실제 HTTP 서버 나 역방향 프록시를 가리킬 수 있습니다.HTTP 요청에서 중복 헤더 제거

문제는 클라이언트 응용 프로그램에 때때로 헤더가 두 번 이상 포함될 수있는 문제가 있다는 것입니다. 예를 들어, HTTP 요청이처럼 보이는 끝낼 수 : 클라이언트가 톰캣에 직접 이야기하는 경우

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

이 잘 작동하지만 다음 역방향 프록시를 통과하는 경우 중복 된 헤더가 엉망이와 톰캣 끝을 얻을 수가

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

나는 그들이이 클라이언트 -> 프록시 -> 톰캣 체인에받은 아파치는 확실히 구성 요소입니다/전송으로 HTTP 요청을 검사 와이어 샤크를 사용

는 "붕괴 : 최대 다음과 같습니다 요청을 수신 "두 개의 머리말이 하나가되었습니다.

이 동작을 두 헤더 또는 단 하나만 보내는 방식으로 구성 할 수 있습니까? 내가 원하지 않는 것은이 "붕괴"가 일어나는 것입니다 ...

+1

아마도 mod_headers를 사용하여 두 번째 헤더를 삭제할 수 있습니다. 문서를 확인 했습니까? –

답변

0

중복 머리글을 제거하려면 mod_headers를 사용할 수 있습니다. 사용 설정 방법에 대한 정보는 해당 official docs을 참조하십시오. 헤더의 첫 번째 부분이 사라질 수 있도록

그런 다음 당신은 당신의 구성 파일과 같은 라인을 추가 할 수 있습니다

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

가 당신을 위해 작동하는지 알려주세요.

+0

mod_headers를 활성화하고 그 행을 가상 호스트 구성 파일에 추가했지만 "abc123"대신 사용해야 할 것이 무엇인지 알 수 없습니다. 또한 클라이언트가 두 개가 아닌 하나의 헤더를 보낸다면 그 중단은 없을 것입니까? –

+1

그것을 알아 냈습니다. 이 줄은 Base64로 인코딩되어 있기 때문에'RequestHeader edit Authorization "^ BASIC \ [a-zA-Z0-9] + \\, \" ""입니다. 또한 잘 구성된 요청으로도 잘 작동합니다. 감사! –