HTTP 프로토콜에는 요청에 대해 오류가 발생시 그에 적절한 오류 응답 코드를 정의하고 있습니다. 예를 들어 404는 페이지가 없는 경우, 500은 내부 서버 오류 등등으로요.
웹서버나 WAS에는 이러한 코드들에 대한 기본 페이지를 가지고 있습니다. 하지만 이러한 페이지들을 그냥 사용하는 경우는 없고 보통 사이트에 맞게 재정의해서 사용하기 마련입니다. 오류가 발생시 자신의 사이트에서 원하는 디자인으로 오류 발생을 알리는 거죠.
Java 플랫폼일 경우 모든 예외(exception) 발생을 포착하여 보통 사용자에게는 하나의 오류 페이지를 보여주게 지정하게 됩니다.
이러한 작업을 현재 진행하고 있는 프로젝트에 적용 중이었습니다. 예외 포착도 잘하게 설정 완료하고, 간단하게 오류 페이지도 만들어 놓은 후 프로그램에서 일부러 예외를 발생하게 설정을 완료한 후에 브라우저에서 해당 url을 요청하여 결과를 확인했습니다.
먼저 FF에서는 결과가 제대로 나왔습니다. 그 다음 IE 차례였는데, 제가 지정한 오류 페이지가 보이질 않고 브라우저 자신의 500 오류에 대한 메시지가 나오는 것입니다.
'음... 이상하네...'
Fiddler로 확인 결과 오류 코드와 함께 지정한 오류 페이지는 제대로 반환되고 있었습니다.
이 때부터 땅파기가 시작됐죠. 이러 저러한 설정들을 해가며 아무리 해도 여전히 안 되는 겁니다. 엄청난 땅파기 후에,
'음... 구글에게 한 번 물어볼까'
하는 생각에 검색 결과 다음과 같은 답을 찾을 수 있었습니다.
A Warning about Microsoft Internet Explorer - IE and too-short custom 404 error pages
IE는 특정 오류 페이지가 자신이 원하는 크기보다 작을 경우 응답 받은 내용을 보여주는 것이 아니라 자신이 가진 해당 오류에 대한 내용을 보여주는 것이었습니다.
다음의 표는 위의 URL에서 인용한 내용입니다.
| 코드 | 설명 | 파일 크기 |
| 400 | Bad Request | > 512 bytes |
| 403 | Forbidden | > 256 bytes |
| 404 | Not Found | > 512 bytes |
| 405 | Method Not Allowed | > 512 bytes |
| 406 | Not Acceptable | > 512 bytes |
| 408 | Request Time-out | > 512 bytes |
| 409 | Conflict | > 512 bytes |
| 410 | Gone | > 512 bytes |
| 500 | Internal Server Error | > 512 bytes |
| 501 | Not Implemented | > 512 bytes |
| 505 | HTTP Version Not Supported | > 512 bytes |
결국 저는 테스트 용이라 아주 간단하게 오류 페이지를 만들었던게 문제였습니다. 물론 그 덕분에 이런 내용을 알게됐지만, 땅파기는 역시 힘들어요.
일반적으로 오류 페이지를 만들 때는 이거 저거 치장을 하기 때문에 보통 이 크기는 넘을거라 생각은 하지만 알아는 둬야 저같은 땅파기는 안 할 듯 싶습니다.

