HTTP est un protocole de couche application, bien que la version HTTP/2 ait été lancée en 2015 et soit prise en charge par les principaux navigateurs Web et serveurs Web.
Ses principales fonctionnalités peuvent être résumées comme suit :
Supporte le mode client/serveur.
Simple et rapide : Lorsqu'un client demande un service au serveur, il lui suffit de transmettre la méthode et le chemin de la requête. En raison de la simplicité du protocole HTTP, la taille du programme du serveur HTTP est petite et la vitesse de communication est très rapide.
Flexible : HTTP permet la transmission de tout type d'objet de données. Le type en cours de transfert est marqué par Content-Type.
Aucune connexion : Le sens de l'absence de connexion est de limiter chaque connexion à ne traiter qu'une seule requête. Une fois que le serveur a traité la demande du client et reçu la réponse du client, il se déconnecte. Cette méthode permet de gagner du temps de transmission.
Stateless : Le protocole HTTP est un protocole sans état. Sans état signifie que le protocole n'a aucune capacité de mémoire pour le traitement des transactions. L'absence de statut signifie que si un traitement ultérieur nécessite les informations précédentes, celles-ci doivent être retransmises, ce qui peut entraîner une augmentation de la quantité de données transférées par connexion. En revanche, le serveur répond plus rapidement lorsqu’il n’a pas besoin d’informations préalables. Afin de résoudre ce problème, les programmes Web introduisent un mécanisme de cookies pour maintenir l'état.
De plus, les messages de requête HTTP et les messages de réponse sont composés d'une ligne de départ (pour les messages de requête, la ligne de départ est la ligne de requête, pour les messages de réponse, la ligne de départ est la ligne d'état), d'un message en-tête (facultatif) ), une ligne vide (une ligne avec uniquement CRLF) et un corps de message (facultatif).
En tant que testeur de logiciels, il est essentiel de comprendre la signification du statut HTTP renvoyé par certains serveurs. Ce n'est qu'en comprenant ces codes de statut que vous pourrez être utile au travail. . Code d'état HTTP :
Code d'état de la réponse
Le code d'état est composé de trois chiffres. Le premier chiffre définit la catégorie de réponse et a cinq valeurs possibles.
1xx : Informations d'indication – indique que la demande a été reçue et continue d'être traitée.
2xx : Succès – Indique que la demande a été reçue, comprise et acceptée avec succès.
3xx : Redirection - Des opérations supplémentaires doivent être effectuées pour finaliser la demande.
4xx : Erreur client - La demande contient une erreur de syntaxe ou la demande ne peut pas être satisfaite.
5xx : Erreur côté serveur -- Le serveur n'a pas réussi à répondre à une demande légitime.
Codes d'état courants :
1xx - Invite d'informations
Ces codes d'état représentent des réponses temporaires. Le client doit être prêt à recevoir une ou plusieurs réponses 1xx avant de recevoir une réponse régulière.
· 100 - Continuer La demande initiale a été acceptée et le client doit continuer à envoyer le reste de la demande.
· 101 - Changement de protocole Le serveur se conformera à la demande du client et se convertira vers un autre protocole.
2xx - Succès
Ce type de code d'état indique que le serveur a accepté avec succès la demande du client.
· 200 - OK Tout va bien, et les documents de réponse aux requêtes GET et POST suivent.
· 201 - Créé Le serveur a créé le document, et l'entête Location donne son URL.
· 202 - Acceptée La demande a été acceptée, mais le traitement n'est pas terminé.
· 203 - Informations ne faisant pas autorité Le document a été renvoyé normalement, mais certains en-têtes de réponse peuvent être incorrects car une copie du document est utilisée, informations ne faisant pas autorité.
· 204 - Aucun contenu Il n'y a pas de nouveau document, le navigateur devrait continuer à afficher le document original. Ce code d'état est utile si l'utilisateur actualise régulièrement la page et que la servlet peut déterminer que le document de l'utilisateur est suffisamment à jour.
· 205 - Réinitialiser le contenu Il n'y a pas de nouveau contenu, mais le navigateur devrait réinitialiser le contenu qu'il affiche. Utilisé pour forcer le navigateur à effacer le contenu d'entrée du formulaire.
· 206 - Contenu partiel Le client a envoyé une requête GET (requête fragmentée) avec un en-tête Range, et le serveur l'a complétée.
3xx - Redirection
Le navigateur client doit prendre des mesures supplémentaires pour répondre à la demande. Par exemple, le navigateur devra peut-être demander une page différente sur le serveur ou répéter la demande via un serveur proxy.
· 300 - Choix multiples Le document demandé par le client se trouve à plusieurs endroits, et ces emplacements sont répertoriés dans le document retourné. Si le serveur souhaite proposer une préférence, il doit l'indiquer dans l'en-tête de réponse Location.
· 301 - Déplacé définitivement Le document demandé par le client est ailleurs, la nouvelle URL est donnée dans l'en-tête Location, et le navigateur devrait automatiquement accéder à la nouvelle URL.
· 302 - Trouvé Semblable à 301, mais la nouvelle URL doit être considérée comme un remplacement temporaire plutôt que permanent. Notez que le message d'état correspondant dans HTTP 1.0 est « Déplacé temporairement ». Lorsque ce code d'état apparaît, le navigateur peut accéder automatiquement à la nouvelle URL, il s'agit donc d'un code d'état utile. Notez que ce code d'état peut parfois être utilisé de manière interchangeable avec 301. Certains serveurs renvoient 301, tandis que d'autres renvoient 302. À proprement parler, nous ne pouvons que supposer que le navigateur redirigera automatiquement uniquement si la requête d'origine était un GET. Voir 307.
· 303 - Voir Autres Semblable à 301/302, la différence est que si la requête d'origine est POST, le document cible de redirection spécifié par l'en-tête Location doit être extrait via GET.
· 304 - Non modifié Le client a mis les documents en mémoire tampon et a émis une demande conditionnelle (fournissant généralement un en-tête If-Modified-Since pour indiquer que le client ne souhaite que des documents plus récents que la date spécifiée). Le serveur indique au client que le document original mis en mémoire tampon peut continuer à être utilisé.
· 305 - Utiliser proxy Le document demandé par le client doit être récupéré via le serveur proxy spécifié par l'en-tête Location (nouveau dans HTTP 1.1).
· 307 - La redirection temporaire est la même que 302 (trouvé). De nombreux navigateurs redirigeront de manière incorrecte avec une réponse 302, même si la requête d'origine était un POST, même s'ils ne peuvent en réalité rediriger que si la réponse à une requête POST est un 303. Pour cette raison, HTTP 1.1 a ajouté 307 pour distinguer plus clairement plusieurs codes d'état : lorsqu'une réponse 303 se produit, le navigateur peut suivre les requêtes GET et POST redirigées ; s'il s'agit d'une réponse 307, le navigateur ne peut suivre que la redirection des requêtes GET ;
4xx - Erreur client
Ces codes d'état indiquent que quelque chose s'est peut-être mal passé avec la demande, ce qui a empêché le serveur de traiter la demande.
· 400 - Bad Request Le serveur ne comprend pas la syntaxe de la requête.
· 401 - Non autorisé La demande nécessite une authentification. Une fois connecté, le serveur peut renvoyer cette réponse à la page. La réponse contiendra un en-tête WWW-Authenticate et le navigateur affichera la boîte de dialogue nom d'utilisateur/mot de passe en conséquence, puis refaire la demande après avoir rempli l'en-tête d'autorisation approprié. IIS définit un certain nombre d'erreurs 401 différentes qui indiquent une cause plus spécifique de l'erreur. Ces codes d'erreur spécifiques apparaissent dans le navigateur, mais pas dans les journaux IIS :
· 401.1 - Échec de la connexion.
· 401.2 - Configuration du serveur provoquant un échec de connexion.
· 401.3 - Non autorisé en raison d'une restriction ACL sur la ressource.
· 401.4 - L'autorisation du filtre a échoué.
· 401.5 - L'autorisation de l'application ISAPI/CGI a échoué.
· 401.7 – L'accès est refusé par la politique d'autorisation URL sur le serveur Web. Ce code d'erreur est spécifique à IIS 6.0.
· 403 - Interdit Le serveur a refusé la demande. Généralement causé par les paramètres d'autorisation des fichiers ou des répertoires sur le serveur. Accès interdit : IIS définit un certain nombre d'erreurs 403 différentes qui indiquent des causes plus spécifiques de l'erreur :
· 403.1 - L'accès à l'exécution est interdit.
· 403.2 - Accès en lecture interdit.
· 403.3 - Accès en écriture interdit.
· 403.4 - SSL requis.
· 403.5 - SSL 128 requis.
· 403.6 - Adresse IP refusée.
· 403.7 - Certificat client requis.
· 403.8 - Accès au site refusé.
· 403.9 - Trop d'utilisateurs.
· 403.10 - Configuration invalide.
· 403.11 - Changement de mot de passe.
· 403.12 - Accès à la table de mappage refusé.
· 403.13 - Certificat client révoqué.
· 403.14 - Inscription à l'annuaire refusée.
· 403.15 - Autorisation d'accès client dépassée.
· 403.16 - Le certificat client n'est pas fiable ou n'est pas valide.
· 403.17 - Le certificat client a expiré ou n'est pas encore valide.
· 403.18 - L'URL demandée ne peut pas être exécutée dans le pool d'applications actuel. Ce code d'erreur est spécifique à IIS 6.0.
· 403.19 - Impossible d'exécuter CGI pour les clients de ce pool d'applications. Ce code d'erreur est spécifique à IIS 6.0.
· 403.20 - La connexion au passeport a échoué. Ce code d'erreur est spécifique à IIS 6.0.
· 404 - Not Found Le serveur ne trouve pas la page Web demandée. Par exemple, le serveur renvoie généralement ce code si la requête concerne une page qui n'existe pas sur le serveur.
· 404.0 - (Aucun) – Fichier ou répertoire introuvable.
· 404.1 - Le site Web n'est pas accessible sur le port demandé.
· 404.2 - Cette requête est bloquée par la politique de verrouillage de l'extension du service Web.
· 404.3 - Cette demande est bloquée par la politique de mappage MIME.
· 405 - Méthode non autorisée La méthode de requête (GET, POST, HEAD, DELETE, PUT, TRACE, etc.) n'est pas applicable à la ressource spécifiée, et le verbe HTTP utilisé pour accéder à cette page n'est pas autorisé (méthode non autorisée). autorisé)
· 406 - Non Acceptable La ressource spécifiée a été trouvée, mais son type MIME est incompatible avec celui spécifié par le client dans l'en-tête Accpet. Le navigateur client n'accepte pas le type MIME de la page demandée.
· 407 - Authentification proxy requise Ce code d'état est similaire à 401 (Non autorisé), mais précise que le demandeur doit utiliser un proxy pour l'autorisation. Si le serveur renvoie cette réponse, il indique également le proxy que le demandeur doit utiliser.
· 408 - Request Timeout Le client n'a émis aucune requête pendant le temps d'attente autorisé par le serveur. Le client peut répéter la même demande ultérieurement.
· 409 - Conflit Le serveur a rencontré un conflit lors de l'exécution de la requête. Le serveur doit inclure des informations sur le conflit survenu dans la réponse. Le serveur peut renvoyer ce code lorsqu'il répond à une requête PUT qui entre en conflit avec une requête précédente, fournissant ainsi une liste des différences entre les deux requêtes.
· 410 - Gone Le document demandé n'est plus disponible et le serveur ne sait pas vers quelle adresse rediriger. La différence entre celui-ci et 404 est que le retour de 407 signifie que le document a définitivement quitté l'emplacement spécifié, tandis que 404 signifie que le document n'est pas disponible pour des raisons inconnues.
· 411 - Longueur requise Le serveur n'acceptera pas une requête contenant un champ d'en-tête Content-Length invalide à moins que le client n'envoie un en-tête Content-Length.
· 412 - Échec de la condition préalable Certaines conditions préalables spécifiées dans l'en-tête de la requête ont échoué.
· 413 – Entité de requête trop volumineuse Le document cible est plus volumineux que ce que le serveur est actuellement prêt à gérer. Si le serveur pense pouvoir traiter la requête plus tard, il doit fournir un en-tête Retry-After.
· 414 - Demande d'URI trop longue L'URI est trop longue.
· 415 – Type de média non pris en charge.
· 416 – Plage demandée non satisfaisante Le serveur ne peut pas satisfaire l'en-tête Range spécifié par le client dans la requête.
·417 – L'exécution a échoué.
· 423 – Erreur verrouillée.
5xx - Erreur du serveur
Ces codes d'état indiquent qu'une erreur interne s'est produite pendant que le serveur essayait de traiter la demande. Ces erreurs peuvent être des erreurs sur le serveur lui-même plutôt qu'une erreur dans la requête.
· 500 - Erreur interne du serveur Le serveur a rencontré une erreur et n'a pas pu terminer la demande.
· 500.12 - L'application est en train de redémarrer sur le serveur web.
· 500.13 - Le serveur web est trop occupé.
· 500.15 - Les demandes directes à Global.asa ne sont pas autorisées.
· 500.16 – Informations d'autorisation UNC incorrectes. Ce code d'erreur est spécifique à IIS 6.0.
· 500.18 – Le magasin d'autorisation d'URL ne peut pas être ouvert. Ce code d'erreur est spécifique à IIS 6.0.
· 500.100 - Erreur ASP interne.
· 501 - Non implémenté Le serveur n'a pas la fonctionnalité nécessaire pour compléter la requête. Par exemple, le serveur peut renvoyer ce code lorsque la méthode de requête n'est pas reconnue par le serveur.
· 502 - Bad Gateway Le serveur, agissant comme passerelle ou proxy, a reçu une réponse invalide du serveur en amont.
· 502.1 - L'application CGI a expiré.
· 502.2 - Erreur d'application CGI.
· 503 - Service indisponible Le serveur est actuellement indisponible (en raison d'une surcharge ou d'un temps d'arrêt pour maintenance). Il ne s’agit souvent que d’un état temporaire.
· 504 - Gateway Timeout Le serveur, agissant comme passerelle ou proxy, n'a pas reçu à temps les requêtes du serveur en amont.
· 505 - Version HTTP non prise en charge Le serveur ne prend pas en charge la version du protocole HTTP utilisée dans la requête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!