HTTP (HyperText Transfer Protocol) est un ensemble de règles permettant aux ordinateurs de communiquer via le réseau. Les experts en informatique ont conçu HTTP pour permettre aux clients HTTP (tels que les navigateurs Web) de demander des informations et des services aux serveurs HTTP (serveurs Web). La version actuelle du protocole HTTP est 1.1. HTTP est un protocole sans état, et sans état fait référence au Web. Il n'est pas nécessaire d'établir une connexion persistante entre le navigateur et le serveur Web. Cela signifie que lorsqu'un client fait une requête au serveur et que le serveur Web renvoie une réponse, la connexion est fermée et aucune information sur la connexion n'est conservée sur le serveur. serveur Information.HTTP suit le modèle requête/réponse. Le navigateur Web envoie une demande au serveur Web, et le serveur Web traite la demande et renvoie une réponse appropriée. Toutes les connexions HTTP sont structurées comme un ensemble de requêtes et de réponses.
HTTP utilise des types de contenu, ce qui signifie que les fichiers renvoyés par le serveur Web au navigateur Web ont des types liés. Tous ces types sont calqués sur le protocole de messagerie Internet MIME, ce qui signifie que le serveur Web indique au navigateur Web de quel type de fichier il s'agit, qu'il s'agisse d'un document HTML, d'une image GIF, d'un fichier son ou d'une application autonome. . La plupart des navigateurs Web disposent d'un ensemble d'applications d'assistance configurables qui indiquent au navigateur comment gérer différents types de contenu envoyés par le serveur Web.
Le mécanisme de communication HTTP est que lors d'un processus de communication HTTP complet, les 7 étapes suivantes seront effectuées entre le navigateur Web et le serveur Web :
(1) Établir une connexion TCP
Avant de commencer le travail HTTP, le navigateur Web doit d'abord établir une connexion avec le serveur Web via le réseau. La connexion s'effectue via TCP. Ce protocole et le protocole IP construisent conjointement Internet, la célèbre famille de protocoles TCP/IP. , donc Internet Également connu sous le nom de réseau TCP/IP. HTTP est un protocole de couche application de niveau supérieur à TCP. Selon les règles, ce n'est qu'après l'établissement du protocole de couche inférieure que le protocole de couche supérieure peut être connecté. Par conséquent, la connexion TCP doit être établie en premier. le numéro de la connexion TCP est 80
(2) Le navigateur Web envoie une commande de requête au serveur Web
Une fois la connexion TCP établie, le navigateur Web enverra une commande de requête au serveur Web serveur Web
Par exemple : GET/sample/hello .jsp HTTP/1.1
(3) Le navigateur Web envoie les informations d'en-tête de la demande
Après que le navigateur ait envoyé sa demande commande, il envoie également d'autres informations au serveur Web sous la forme d'informations d'en-tête, puis le navigateur envoie une ligne vide pour informer le serveur qu'il a fini d'envoyer les informations d'en-tête.
(4) Réponse du serveur Web
Après que le client ait envoyé une requête au serveur, le serveur enverra une réponse au client,
HTTP/1.1 200 OK
La première partie de la réponse est le numéro de version du protocole et le code d'état de la réponse
(5) Le serveur Web envoie les informations d'en-tête de réponse
Tout comme le client le fera envoyer des informations sur lui-même avec la demande, le serveur enverra également des données sur lui-même et le document demandé. Avec la réponse, l'utilisateur recevra des données sur lui-même et le document demandé.
(6) Le serveur Web envoie des données au navigateur
Une fois que le serveur Web a envoyé les informations d'en-tête au navigateur, il enverra une ligne vide pour indiquer que l'envoi des informations d'en-tête se termine ici, puis , il envoie les données réelles demandées par l'utilisateur dans le format décrit par les informations d'en-tête de réponse Content-Type
(7) Le serveur Web ferme la connexion TCP
Sous circonstances normales, une fois que le serveur Web envoie une requête au navigateur. Une fois que le serveur envoie les données de la requête, il fermera la connexion TCP, puis si le navigateur ou le serveur ajoute cette ligne de code dans ses informations d'en-tête
Connexion : keep-alive
Une fois la connexion TCP envoyée, elle restera ouverte afin que le navigateur puisse continuer à envoyer des requêtes via la même connexion. Le maintien des connexions permet d'économiser le temps nécessaire pour établir une nouvelle connexion pour chaque demande et économise également la bande passante du réseau.
Format de requête HTTP
Lorsque le navigateur fait une requête au serveur Web, il transmet un bloc de données au serveur, qui correspond aux informations de la requête. les informations se composent de 3 parties:
l Méthode de demande Protocole/version URI
l En-tête de demande (En-tête de demande)
l Corps de la demande
Ce qui suit est une requête HTTP Exemple :
GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh- cn
Connexion : Keep-Alive
Hôte :localhost
Agent utilisateur :Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accepter - Encodage :gzip,deflate
username=jinqiao&password=1234
(1) Protocole/version URI de la méthode de requête
request La première ligne est "Proposition/version d'URL de méthode": GET/sample.jsp HTTP/1.1
Dans le code ci-dessus, "GET" représente la méthode de requête, "/sample.jsp" représente l'URI, et "HTTP/1.1 Représente le protocole et la version du protocole
.
Selon la norme HTTP, les requêtes HTTP peuvent utiliser plusieurs méthodes de requête. Par exemple : HTTP1.1 prend en charge 7 méthodes de requête : GET, POST, HEAD, OPTIONS, PUT, DELETE et TARCE. Dans les applications Internet, les méthodes les plus couramment utilisées sont GET et POST.
L'URL spécifie entièrement la ressource réseau à laquelle accéder, en donnant généralement simplement un répertoire relatif au répertoire racine du serveur, donc elle commence toujours par "/", et enfin, la version du protocole déclare le processus de communication version utilisant HTTP.
(2) En-tête de requête
L'en-tête de requête contient de nombreuses informations utiles sur l'environnement client et le corps de la requête. Par exemple, l'en-tête de la requête peut déclarer la langue utilisée par le navigateur, la longueur du corps de la requête, etc.
Accepter :image/gif.image/jpeg.*/*
Accepter-Langue :zh-cn
Connexion :Keep-Alive
Hôte :localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accepter-Encoding:gzip,deflate.
(3) Corps de la requête
Il y a une ligne vide entre l'en-tête de la requête et le corps de la requête. Cette ligne est très importante. Elle indique que l'en-tête de la requête est terminé, et ce qui suit est le corps de la requête. Le corps de la requête peut contenir des informations sur la chaîne de requête soumises par le client :
username=jinqiao&password=1234
Dans l'exemple de requête HTTP ci-dessus, le corps de la requête n'a qu'une seule ligne de contenu. Bien entendu, dans les applications réelles, le corps de la requête HTTP peut contenir plus de contenu.
Méthode de requête HTTP Je ne discuterai ici que de la méthode GET et de la méthode POST
l Méthode GET
La méthode GET est la méthode de requête HTTP par défaut. pour soumettre des formulaires tous les jours, cependant, les données du formulaire soumises à l'aide de la méthode GET ne sont que brièvement codées et seront envoyées au serveur Web dans le cadre de l'URL. Par conséquent, si la méthode GET est utilisée pour soumettre le formulaire. données, il existe des risques de sécurité. Par exemple
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
À partir de la requête URL ci-dessus, il est facile de Reconnaître le contenu des soumissions de formulaires. (Ce qui suit ?) De plus, puisque les données soumises par la méthode GET font partie de la requête URL, la quantité de données soumises ne peut pas être trop importante
l POST
La méthode POST est une alternative à la méthode GET Méthode, elle soumet principalement les données du formulaire au serveur Web, en particulier les gros lots de données. La méthode POST pallie certaines des lacunes de la méthode GET. Lors de la soumission des données d'un formulaire via la méthode POST, les données ne sont pas transmises au serveur Web dans le cadre de la requête URL mais sous forme de données standard. Cela surmonte les défauts de la méthode GET dans laquelle les informations ne peuvent pas être gardées confidentielles et le volume des données est réduit. trop petit. Par conséquent, pour des raisons de sécurité et de respect de la vie privée des utilisateurs, la méthode POST est généralement utilisée lors de la soumission des formulaires.
D'un point de vue programmation, si l'utilisateur soumet des données via la méthode GET, les données sont stockées dans la variable d'environnement QUERY_STRING, tandis que les données soumises par la méthode POST peuvent être obtenues à partir du flux d'entrée standard.
La réponse HTTP est similaire à la requête HTTP. La réponse HTTP se compose également de 3 parties, à savoir :
l Description du code de la version de l'état du protocole
l En-tête de réponse (En-tête de réponse)
l Corps de la réponse
Ce qui suit est un exemple de réponse HTTP :
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
<html><head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):
HTTP/1.1 200 OK响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
响应正文响应正文就是服务器返回的HTML页面:
<html><head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
Copier après la connexion
Entre l'en-tête de réponse et le corps Ils doivent également être séparés par des lignes vides.
l Code de réponse HTTP
Le code de réponse HTTP est également appelé code d'état, qui reflète l'état du serveur Web traitant les requêtes HTTP. Le code de réponse HTTP se compose de 3 chiffres. Le premier chiffre définit le type de code de réponse :
1XX - Information (Information), indiquant que la demande du navigateur Web a été reçue et est en cours de traitement
2XX-Réussite, indiquant que la demande de l'utilisateur a été correctement reçue, comprise et traitée. Par exemple : 200 OK
3XX-Redirection, indiquant que la demande n'a pas abouti et que le client doit prendre des mesures supplémentaires.
4XX-Client Error (Client Error), indiquant que la demande soumise par le client comporte une erreur. Par exemple : 404 NOT
Found, ce qui signifie que le document référencé dans la demande comporte une erreur. n'existe pas.
5XX-Server Error (Server Error) signifie que le serveur ne peut pas terminer le traitement de la requête : comme 500
Pour nous, développeurs web, maîtriser le code de réponse HTTP peut aider à améliorer l'application web efficacité et précision du débogage.
Connexion sécurisée
L'une des utilisations les plus courantes des applications Web est le commerce électronique. Les programmes côté serveur Web peuvent être utilisés pour permettre aux gens de faire des achats en ligne. Il convient de souligner que par défaut, l'envoi d'informations sur Internet n'est pas sécurisé. Si quelqu'un arrive, à quel point ce serait grave si un message que vous avez envoyé à un ami était intercepté et qu'il pouvait l'ouvrir et imaginer qu'il contenait votre numéro de carte de crédit ? Heureusement, de nombreux serveurs Web et navigateurs Web ont la capacité de créer des connexions sécurisées. afin qu'ils puissent communiquer en toute sécurité.
La norme la plus courante pour fournir des connexions sécurisées sur Internet est le protocole SSL (Secure Sockets Layer). Le protocole SSL est un protocole de couche application (comme HTTP) utilisé pour échanger des données sur le Web de manière sécurisée. SSL utilise un système de cryptage à clé publique. Essentiellement, cela signifie que chaque partie de l’entreprise dispose d’une clé publique et d’une clé privée. Lorsqu'une partie code à l'aide de la clé publique de l'autre partie, seule la personne possédant la clé correspondante peut la décoder. En termes simples, le codage par clé publique fournit une méthode sécurisée d'échange de données entre deux parties. Une fois la connexion SSL établie, le client et le serveur échangent des clés publiques et les vérifient avant d'établir un contact professionnel. les données peuvent être échangées en toute sécurité.
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!