2013-12-19 5 views
2

HttpStatu의 텍스트를 Tomcat 7에서 어떻게 대체 할 수 있습니까?HTTP 응답 상태 텍스트 덮어 쓰기

저는 HttpServletResponse.sendError(401, "Invalid username or Password")을 사용하고 있습니다. 그러나 클라이언트의 응답 상태를 보면 401 Unauthorized입니다.

재정의 할 방법이 있습니까?

+0

[ "사용자에게 친숙한 오류 페이지를 표시하는 방법 ...]"(http://stackoverflow.com/questions/2748220/how-to-show-user-friendly-error-page- 대신 tomcat-log-with-stack-trace-in-b)를 사용합니다. – dcsohl

+0

@dcsohl 중복되지 않습니다. 이 질문은 HTTP 헤더에 관한 것입니다. 다른 하나는 사용자 정의 오류 페이지에 관한 것입니다. – Javier

답변

4

편집 catalina.properties 몸에 또는 응답 헤더에 기록 할 경우 RFC 2616에 따라 설정되며 없다 내가 할 다음 때, 내 dev에 환경에서 해당 세트로

org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER=true 

: 속성을 추가

response.sendError(HttpServletResponse.SC_BAD_REQUEST, 
        "A very very very bad request"); 

을 나는 참조 :

HTTP/1.1 400 A very very very bad request 
Server: Apache-Coyote/1.1 
Content-Type: text/html;charset=utf-8 
Content-Language: en 
Content-Length: 1024 
Date: Fri, 20 Dec 2013 11:09:54 GMT 
Connection: close 

또한 here

+0

고마워, 저에게 도움이되었습니다. – Cristi

+0

이것은 관련이 없지만 일부 클라이언트 (예 : iOS 사파리가 맞춤 응답 텍스트를 존중하지 않음) – roo2

4

없음 - 응답 코드가 당신은 (는 API 클라이언트) 사용자에게 메시지를 전달하거나

+3

사실, 응답 코드는 RFC에 지정되어 있지만 "Reason Phrase"(질문의 내용)는 사용자가 좋아할 수 있습니다. ([rfc2616 섹션 6.1.1] 섹션 참조 (http://tools.ietf.org/html/rfc2616#section-6.1.1) "여기에 나열된 이유 구문은 권장 사항 일 뿐이며, 다음과 같은 지역 동등 물로 대체 될 수 있습니다. 프로토콜에 영향을줍니다. " –

3

Tomcat이 더 이상USE_CUSTOM_STATUS_MSG_IN_HEADER 속성을 지원 here을 논의했다. 8.5.0에서

변경 내역 :

RFC 클라이언트가 HTTP에 이유 문구를 무시해야 7230 주/1.1 응답 메시지. 이유 구문은 선택 사항이므로 Tomcat no 은 더 오래 전송합니다. 결과적으로 시스템 속성 org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER은 (는) 으로 더 이상 사용되지 않으며 제거되었습니다. (마르크트)

RFC 7230, 하이퍼 텍스트 전송 프로토콜 (HTTP/1.1) : 메시지 구문 및 라우팅 년 6 월 2014 년 Section 3.1.2 :

이유 문구 요소의 유일한 목적을 위해 존재

숫자 상태 코드와 관련된 텍스트 설명을 제공합니다. 대화 형 텍스트 클라이언트에서 자주 사용되는 이전 인터넷 응용 프로그램 프로토콜을 준수하지 않았습니다. 클라이언트는 이유문 콘텐츠을 무시해야합니다 (SHOULD).