Response.StatusCode 및 Internet Explorer - 사용자 정의 메시지를 표시하시겠습니까?

StackOverflow https://stackoverflow.com/questions/50747

문제

내 Application_Error 핸들러에서 HttpRequestValidationException을 구현하고 있으며 가능하다면 사용자 정의 메시지를 표시하고 싶습니다.

이제 StatusCode에 대해 생각하고 있습니다.현재 예에서는 200을 전송하는데, 이는 수행되어서는 안 된다고 생각합니다.대신 (IMHO)에 더 적합한 400 Bad Request를 보내고 싶습니다.하지만 동시에 Response.Write를 사용하여 사용자 정의 메시지를 입력하고 싶습니다.Firefox에서는 제대로 표시되지만 IE7에서는 도움이 되지 않는 기본 Internet Explorer 오류 페이지를 표시합니다.

한편으로는 Internet Explorer는 <> 200의 모든 항목에 "좋은" 콘텐츠가 전혀 없다고 가정하고 있으며, RFC는 실제로 명확하지 않습니다. 여기.

그렇다면 HttpRequestValidationException 모범 사례로 인해 발생한 오류 페이지에 대해 HTTP 200을 보내는지 궁금합니다.좋은 대안이 있나요?

도움이 되었습니까?

해결책

HTTP 200 응답 코드는 오류를 나타내지 않습니다.모든 것이 정상임을 나타냅니다.오류에 대해 200 응답 코드를 사용하면 안 됩니다.

응답이 512바이트 미만인 경우 Internet Explorer는 "친숙한 오류" 페이지를 표시합니다.이 문제에 대한 자세한 내용은 다음과 같습니다. http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,

다른 팁

아니요, 확실히 좋은 습관은 아닙니다.2XX 상태 코드는 무엇보다도 다음을 의미합니다. 요청이 유효합니다.이는 HttpRequestValidationException을 발생시키는 것과 정반대입니다.

안타깝게도 IE가 올바르게 작동하도록 만드는 방법을 모르겠습니다.200을 보내는 것보다 약간 더 나은 방법은 오류 페이지로 리디렉션하는 것이지만 여전히 완벽하지는 않습니다.

Internet Explorer는 응답이 4xx 또는 5xx일 때 "친숙한 HTTP 오류 메시지"라고 부르는 것을 표시합니다.이 옵션은 IE의 Tools.Options.Advanced[Browsing] 대화 상자에서 사용자가 끌 수 있습니다.

오류 페이지에 200을 보내는 것은 일반적으로 나쁜 습관입니다.한 가지 대안은 유효한 "오류" 페이지를 갖는 것입니다. 추정된 오류 메시지를 표시한 다음(200도 괜찮습니다) 해당 페이지로 3xx 리디렉션을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top