2012-01-26 2 views
7

Sto utilizzando le pagine Tomcat 7 e JSP. Vorrei fornire una pagina di errore personalizzata per errori HTTP 500.La pagina di errore HTTP personalizzata non viene visualizzata in Internet Explorer

Quello che ho fatto è quello di dichiarare la pagina di errore personalizzato come segue in web.xml:

<error-page> 
    <error-code>500</error-code> 
    <location>/error.jsp</location> 
</error-page> 

e ho creato una JSP chiamato error.jsp con il seguente codice:

<%@ page pageEncoding="UTF-8" isErrorPage="true" %> 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>500</title> 
    </head> 
    <body> 
    <img src="${pageContext.request.contextPath}/images/500.jpg" /> 
    </body> 
</html> 

Ora questo funziona nella maggior parte browser, ma in Internet Explorer vengo indirizzato allo standard "La pagina del sito Web non può visualizzare la pagina".

Perché la mia pagina di errore HTTP 500 personalizzata non viene visualizzata in Internet Explorer?

risposta

21

Questa è una funzionalità di IE. Quando una pagina di errore HTTP recuperata dal server è inferiore a 512 byte, IE mostrerà per impostazione predefinita una pagina di errore "Friendly" come quella che stai affrontando, che è configurabile da Strumenti> Opzioni Internet> Avanzate> Deseleziona "Mostra Messaggio di errore amichevole " nel browser. Altri (veri) browser non hanno questa caratteristica.

Rendendo la pagina di errore HTTP un po 'più grande di 512 byte dovrebbe ovviare a questa caratteristica di IE. Si potrebbe aggiungere alcune intestazioni in più meta, aggiungere un po 'spazio bianco in codice trattino, aggiungere un po' di markup semantico seguenti layout standard del tuo sito, aggiungere un grande commento HTML, ecc

+1

Seriamente, perché IE è così ... – Worthy7

+0

Sì. Anche io dovevo farlo per risolvere il mio problema. Ma tutti i dati sono stati visualizzati correttamente tranne l'icona della scheda. Mostra l'icona di default tomcat. Il mio è una semplice pagina html. Qualche soluzione? –

1

Trovato che l'aggiunta di

<% response.setStatus(200); %> 

al la pagina JSP di errore (cioè prima del tag HTML) risolverebbe il problema.

+0

il mio problema con l'icona della scheda è stato risolto impostando lo stato di risposta su 200. Grazie –