2012-05-24 4 views
0

J'utilise une authentification de base (simple) dans mon servlet qui fonctionne bien pour le serveur Jetty 7.6 mais avec Tomcat 6.0.35 J'obtiens une erreur en essayant d'envoyer la réponse non autorisée pour afficher le nom d'utilisateur/mot de passe sous forme de navigateur:Authentification de base HTTP: Tomcat vs Jetty

java.lang.IllegalStateException 
org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:421) 

le code dans mon servlet ressemble à ceci:

response.setHeader("WWW-Authenticate", "Basic realm=\"" + realm + "\""); 
response.sendError(HttpServletResponse.SC_UNAUTHORIZED); 

l'erreur se produit sur la ligne deux de l'échantillon de code. Je n'utilise pas la contrainte de sécurité < > dans le fichier web.xml. Cela devrait être une authentification très, très simple.

Une idée de pourquoi Tomcat ne fonctionne pas mais Jetty fait?

+0

Que faites-vous après et avant response.sendError? Est-ce que vous écrivez quelque chose dans le flux de sortie du servlet? Veuillez poster tout code lié à votre gestion des réponses. –

+0

Non, il n'y a rien écrit dans la réponse avant ou après ces deux lignes. Je suis confus pourquoi cela fonctionne dans Jetty mais pas dans Tomcat. THX. – chrise

+0

@chrise Qu'en est-il des filtres qui peuvent être en cours d'exécution avant votre servlet? Pouvez-vous poster la trace de la pile complète? –

Répondre

0

Assurez-vous:

  1. Vous n'avez des filtres qui produisent avant votre sortie servlet fonctionne
  2. Vous n'appelez response.setStatus/response.sendError une fois lors de la demande
  3. Vous aren Tout vidage du tampon de réponse

Tout ce qui précède peut valider la réponse avant de l'attendre.

Questions connexes