2010-03-11 11 views
5

나는 표준 출력에 다음과 같은 인쇄하는 CGI 스크립트가 : $ 리디렉션 및 $ 날짜가 합리적인 값입니다Apache2가 Content-Type 헤더를 설정하지 못하게하려면 어떻게해야합니까?

print "Status: 302 Redirect\n"; 
print "Server: Apache-Coyote/1.1\n"; 
print "Location: $redirect\n"; 
print "Content-Length: 0\n"; 
print "Date: $date\n\n"; 

. Apache2가 실제로 보내는 내용에는 Content-Type : 헤더 (text/plain)도 포함됩니다. 나는 서버 구성 파일의 DefaultType을 주석 처리했다.

Content-Type : 헤더를 보내지 않을 때 발생하는 다운 스트림 문제를 디버그하려고합니다. 그래서 어떤 마법의 주문을 에 수행하면 아파치 2가 콘텐츠 유형 헤더를 추가하지 못하게 할 수 있습니까?

답변

3

server/protocol.c 및 server/core.c에 대한 필자의 간단한 설명에 따르면 그렇게 할 수 없습니다.

해당 헤더가없는 경우 기본값은 항상 DefaultType (기본적으로 text/plain)입니다.

+0

아. 불평. 나는 내 클라이언트를 디버그하기 위해 다른 웹 서버를 설치해야 할 것 같다. (서버가 Content-Type을 보내지 않으면 내 코드가 넘어지지 않는다는 버그 보고서를 고치려고합니다.) – Norm

+2

CGI가 명령 줄에서 실행됩니까? 아마도 inetd에서 위의 스크립트를 실행하면 될까요? – ceri

+0

Netcat은 친구입니다. 포트에서 수신 대기하고 파일에서 원하는 내용을 뒤로 푸시하십시오.inetd에서 실행할 필요가 없습니다. –

0

당신은 지시어를 시도 할 수 있습니다 : 나는 the Apache docs in question 읽으면서

ResponseHeader unset Content-Type 
+0

아니, 난 헤더가 새로운 헤더를 추가하려면 추가를 사용할 수 있지만 (그래서 헤더 처리가 수행되는 알고) header unset content-type은 아무 효과가 없습니다. – Norm

0

, 당신이 원하는 것은 실제로는 않습니다

Header unset Content-Type 

희망하실 수 있습니다!

+1

아니요, 작동하지 않았습니다. 나는 ResponseHeader가 Apache2에서 Header가되었다고 생각한다. – Norm

1

RemoveType은 리소스와 함께 콘텐츠 형식을 보내는 것을 중지합니다.

<Files defaulttypenone.txt> 
DefaultType None 
</Files> 
<Files removetype.txt> 
RemoveType .txt 
</Files> 
<Files forcetype.txt> 
ForceType None 
</Files> 

내 자신의 서버에서 테스트 부록,이 세 가지 솔루션 아무도 일했다. 그들은 모두 text/plain을 반환했습니다.

+0

<파일 defaulttypenone.txt> DefaultType 없음 <파일 removetype.txt> RemoveType <파일 forcetype.txt> ForceType 없음 내 자신의 서버에서 테스트 ,이 세 가지 솔루션과 없음이 .txt 일했다. 그들은 모두 text/plain을 반환했습니다. – karlcow

1

서버 측에서 매우 구체적인 테스트 케이스를 작성하려는 경우 텍스트 파일에서 미리 출력을 미리 설정하고 netcat이 일부 포트에서 연결을 수신하는 경우 항상 "속일 수 있습니다".

나는 서버가 보내는 각 바이트를 100 % 확실하게하고 싶을 때 그 트릭을 사용한다.

0

"Header unset Content-Type"지시어를 통해 요청에서 Content-Type 헤더를 삭제하더라도, apache는 요청 구조의 다른 필드에서 Content-Type 헤더를 재생성합니다. 따라서 우리는 먼저 다른 필드를 예약 된 값으로 강제하여 헤더 재 생성을 방지 한 다음 "Header unset"지시문을 통해 Content-Type을 제거합니다. apache2.2를 들어

: apache2.4를 들어

Header set Content-Type none 
Header unset Content-Type 

:

Header set Content-Type "" 
Header unset Content-Type 
관련 문제