Les formats des requêtes HTTP et des réponses HTTP sont similaires et ont tous deux la structure suivante :
Commencez par la ligne d'état + CRLF (retour chariot et saut de ligne)
Module d'en-tête de ligne zéro ou multiple+CRLF
Une ligne vierge, telle que CRLF
Corps de message facultatif tel qu'un fichier, des données de requête, une sortie de requête
Par exemple, un en-tête de réponse du serveur ressemble à ceci :
HTTP/1.1 200 OKContent-Type : text/htmlHeader2 : ...HeaderN : ... (Ligne vierge)<!doctype ...><html><head>...</head><body> ... </body></html>
La ligne d'état contient la version HTTP, un code d'état et le message court correspondant au code d'état.
Le tableau suivant répertorie les codes d'état HTTP et les messages associés qui peuvent être renvoyés par le serveur :
code d'état | information | décrire |
---|---|---|
100 | Continuer | Seule une partie de la requête est reçue par le serveur, mais tant qu'elle n'est pas rejetée par le serveur, le client poursuivra la requête. |
101 | Protocoles de commutation | protocole de commutation de serveur |
200 | D'ACCORD | Demande confirmée |
201 | Créé | La demande est complétée et la nouvelle ressource est créée |
202 | Accepté | La demande a été acceptée mais non traitée |
203 | Informations ne faisant pas autorité | |
204 | Aucun contenu | |
205 | Réinitialiser le contenu | |
206 | Contenu partiel | |
300 | Choix multiples | Un tableau d'hyperliens Les utilisateurs peuvent sélectionner un hyperlien et y accéder. Un maximum de 5 hyperliens sont pris en charge. |
301 | Déménagé définitivement | La page demandée a été déplacée vers une nouvelle URL |
302 | Trouvé | La page demandée a été temporairement déplacée vers une nouvelle URL |
303 | Voir Autre | La page demandée peut être trouvée sous une autre URL |
304 | Non modifié | |
305 | Utiliser un proxy | |
306 | Inutilisé | Ce code d'état n'est plus utilisé, mais le code d'état est conservé |
307 | Redirection temporaire | La page demandée a été temporairement déplacée vers une nouvelle URL |
400 | Mauvaise demande | Le serveur ne reconnaît pas la demande |
401 | Non autorisé | La page demandée nécessite un nom d'utilisateur et un mot de passe |
402 | Paiement requis | Ce code de statut ne peut pas encore être utilisé |
403 | Interdit | L'accès à la page demandée est interdit |
404 | Introuvable | Le serveur ne trouve pas la page demandée |
405 | Méthode non autorisée | La méthode spécifiée dans la demande n'est pas autorisée |
406 | Pas acceptable | Le serveur ne peut créer qu'une réponse inacceptable pour le client |
407 | Authentification proxy requise | Un serveur proxy doit être authentifié avant que les requêtes puissent être traitées |
408 | Délai d'expiration de la demande | Le temps de requête a dépassé le temps d'attente du serveur et la connexion a été déconnectée. |
409 | Conflit | Il y a un conflit dans la demande |
410 | Disparu | La page demandée n'est plus disponible |
411 | Longueur requise | "Content-Length" n'est pas défini, le serveur a refusé d'accepter la demande |
412 | Échec de la condition préalable | La condition préalable demandée a été évaluée par le serveur comme fausse |
413 | Entité de requête trop grande | Le serveur a refusé d'accepter la demande car l'entité demandée était trop grande. |
414 | URL de requête trop longue | Le serveur a refusé d'accepter la demande car l'URL était trop longue. Une grande quantité d'informations de requête apparaît souvent lors de la conversion d'une requête « POST » en requête « GET ». |
415 | Type de média non pris en charge | Le serveur a refusé d'accepter la demande car le type de média n'est pas pris en charge |
417 | L'attente a échoué | |
500 | Erreur interne du serveur | La demande était incomplète et le serveur a rencontré une condition inattendue. |
501 | Non mis en œuvre | La demande est incomplète et le serveur ne fournit pas les fonctionnalités requises |
502 | Mauvaise passerelle | La demande était incomplète et le serveur a reçu une réponse non valide du serveur en amont. |
503 | service non disponible | La demande est incomplète et le serveur est temporairement redémarré ou arrêté. |
504 | Délai d'expiration de la passerelle | Délai d'expiration de la passerelle |
505 | Version HTTP non prise en charge | Le serveur ne prend pas en charge la version HTTP spécifiée |
Le tableau suivant répertorie les méthodes utilisées pour définir les codes d'état dans la classe HttpServletResponse :
SN | Méthode et description |
---|---|
1 | public void setStatus (int statusCode) Cette méthode peut définir n'importe quel code d'état. Si votre réponse contient un code d'état spécial et un document, assurez-vous d'appeler la méthode setStatus avant de renvoyer quoi que ce soit avec PrintWriter. |
2 | public void sendRedirect(String url) Cette méthode génère une réponse 302 et un en-tête Location pour indiquer à l'URL un nouveau document. |
3 | public void sendError(int code, String message) Cette méthode insère automatiquement un code d'état (généralement 404) et un court message dans le document HTML et le renvoie au client. |
L'exemple suivant enverra un code d'erreur 407 au navigateur, et le navigateur vous dira « Besoin d'une authentification !!! ».
<html><head><title>Définition du code d'état HTTP</title></head><body><% // Définissez le code d'erreur et expliquez la raison réponse.sendError(407, "Besoin d'authentification !!!" ) ; %></body></html>
En accédant à la page JSP ci-dessus, vous obtiendrez les résultats suivants :
Vous pouvez également essayer d'utiliser d'autres codes d'état pour voir si vous obtenez des résultats inattendus.