From: Lucien Gentis Date: Sun, 27 Nov 2016 13:45:20 +0000 (+0000) Subject: UTF-8 encoding. X-Git-Tag: 2.4.24~98 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=371d606701f1e0fb72c281893a4bdb5743cbc154;p=thirdparty%2Fapache%2Fhttpd.git UTF-8 encoding. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771595 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/mod/mod_mime_magic.xml.fr b/docs/manual/mod/mod_mime_magic.xml.fr index 4edd85e524e..47c194f8c97 100644 --- a/docs/manual/mod/mod_mime_magic.xml.fr +++ b/docs/manual/mod/mod_mime_magic.xml.fr @@ -1,4 +1,4 @@ - + @@ -25,55 +25,55 @@ mod_mime_magic -Détermine le type MIME d'un fichier à partir de quelques +Détermine le type MIME d'un fichier à partir de quelques octets de son contenu Extension mod_mime_magic.c mime_magic_module -

Ce module permet de déterminer le type - MIME des fichiers de la même manière que la commande Unix - file(1), à savoir en se basant sur les premiers octets - du fichier. Il est conçu comme une "seconde ligne de défense" pour - les cas où mod_mime ne parvient pas à déterminer le +

Ce module permet de déterminer le type + MIME des fichiers de la même manière que la commande Unix + file(1), à savoir en se basant sur les premiers octets + du fichier. Il est conçu comme une "seconde ligne de défense" pour + les cas où mod_mime ne parvient pas à déterminer le type du fichier.

-

Ce module est dérivé d'une version libre de la commande Unix +

Ce module est dérivé d'une version libre de la commande Unix file(1) qui utilise des "nombres magiques" et autres marques distinctives issus du contenu du fichier pour essayer de - déterminer le type de contenu. Ce module n'est activé que si le - fichier magique est spécifié par la directive MimeMagicFile.

Format du fichier magique -

Le fichier contient du texte ASCII sur 4 à 5 colonnes. Les lignes - vides sont autorisées mais ignorées. Toute ligne commençant par un - dièse (#) est un commentaire. Les autres lignes sont - interprétées en colonnes comme suit :

+

Le fichier contient du texte ASCII sur 4 à 5 colonnes. Les lignes + vides sont autorisées mais ignorées. Toute ligne commençant par un + dièse (#) est un commentaire. Les autres lignes sont + interprétées en colonnes comme suit :

- + - - + @@ -101,7 +101,7 @@ octets de son contenu
ColonneDescription
1numéro de l'octet à partir duquel la vérification débute
- ">" indique une dépendance par rapport à la - dernière ligne non-">"
numéro de l'octet à partir duquel la vérification débute
+ ">" indique une dépendance par rapport à la + dernière ligne non-">"
2

type de donnée à rechercher

+

type de donnée à rechercher

- + - + @@ -91,7 +91,7 @@ octets de son contenu
bytecaractère unique
caractère unique
short entier sur 16 bits selon l'ordre de la machine
long entier sur 32 bits selon l'ordre de la machine
stringchaîne de taille choisie
chaîne de taille choisie
date date au format entier long (secondes depuis le temps Unix epoch/1970)
beshort
3contenu des données à rechercher
contenu des données à rechercher
4 type MIME si correspondance

Par exemple, les lignes du fichier magique suivantes - permettraient de reconnaître certains formats audio :

+ permettraient de reconnaître certains formats audio :

# Sun/NeXT audio data
@@ -116,10 +116,10 @@ octets de son contenu
 >12    belong     23       audio/x-adpcm
-

Et celles-ci permettraient de reconnaître la différence entre les +

Et celles-ci permettraient de reconnaître la différence entre les fichiers *.doc qui contiennent des documents Microsoft Word et les documents FrameMaker (ce sont des formats de fichiers - incompatibles qui possèdent le même suffixe).

+ incompatibles qui possèdent le même suffixe).

# Frame
@@ -137,45 +137,45 @@ octets de son contenu
 0  string  \333\245-\0\0\0           application/msword
-

Un champ optionnel codage MIME peut être ajouté dans la cinquième - colonne. Par exemple, cette ligne permet de reconnaître les fichiers - compressés par gzip et définissent le type de codage.

+

Un champ optionnel codage MIME peut être ajouté dans la cinquième + colonne. Par exemple, cette ligne permet de reconnaître les fichiers + compressés par gzip et définissent le type de codage.

-
# gzip (GNU zip, à ne pas confondre avec
+
# gzip (GNU zip, à ne pas confondre avec
 #       l'archiveur zip [Info-ZIP/PKWARE])
 
 0  string  \037\213  application/octet-stream  x-gzip
-
Problèmes liés aux performances -

Ce module n'est pas fait pour tous les systèmes. Si votre système - parvient à peine à supporter sa charge, ou si vous testez les - performances d'un serveur web, il est déconseillé d'utiliser ce - module car son fonctionnement a un prix en matière de ressources - consommées.

+
Problèmes liés aux performances +

Ce module n'est pas fait pour tous les systèmes. Si votre système + parvient à peine à supporter sa charge, ou si vous testez les + performances d'un serveur web, il est déconseillé d'utiliser ce + module car son fonctionnement a un prix en matière de ressources + consommées.

-

Des efforts ont cependant été fournis pour améliorer les +

Des efforts ont cependant été fournis pour améliorer les performances du code original de la commande file(1) en - l'adaptant pour fonctionner sur un serveur web à forte charge. Il a - été conçu pour un serveur sur lequel des milliers d'utilisateurs - publient leurs propres documents, ce qui est probablement très - courant sur un intranet. Il s'avère souvent bénéfique qu'un serveur - puisse prendre des décisions plus pertinentes à propos du contenu + l'adaptant pour fonctionner sur un serveur web à forte charge. Il a + été conçu pour un serveur sur lequel des milliers d'utilisateurs + publient leurs propres documents, ce qui est probablement très + courant sur un intranet. Il s'avère souvent bénéfique qu'un serveur + puisse prendre des décisions plus pertinentes à propos du contenu d'un fichier que celles se basant sur le nom du fichier seul, ne serait-ce que pour diminuer le nombre d'appels du type "pourquoi ma page ne s'affiche-t-elle pas ?" survenant lorsque les utilisateurs - nomment leurs fichiers incorrectement. Vous devez déterminer si la - charge supplémentaire convient à votre environnement.

+ nomment leurs fichiers incorrectement. Vous devez déterminer si la + charge supplémentaire convient à votre environnement.

Notes

Les notes suivantes s'appliquent au module mod_mime_magic et sont incluses ici pour - conformité avec les restrictions de copyright des contributeurs - qui requièrent de les accepter.

-

Note de traduction : ces informations de type légal ne sont pas traductibles

+ conformité avec les restrictions de copyright des contributeurs + qui requièrent de les accepter.

+

Note de traduction : ces informations de type légal ne sont pas traductibles

mod_mime_magic: MIME type lookup via file magic numbers
@@ -257,22 +257,22 @@ octets de son contenu MimeMagicFile -Active la détermination du type MIME en se basant sur le +Active la détermination du type MIME en se basant sur le contenu du fichier et en utilisant le fichier magique -spécifié +spécifié MimeMagicFile chemin-fichier server configvirtual host

La directive MimeMagicFile permet - d'activer ce module, le fichier par défaut fourni étant - conf/magic. Les chemins sans slash '/' de début sont - relatifs au répertoire défini par la directive conf/magic. Les chemins sans slash '/' de début sont + relatifs au répertoire défini par la directive ServerRoot. Les serveurs virtuels - utilisent le même fichier que le serveur principal sauf si un - fichier spécifique a été défini pour ce serveur virtuel, auquel cas - c'est ce dernier fichier qui sera utilisé.

+ utilisent le même fichier que le serveur principal sauf si un + fichier spécifique a été défini pour ce serveur virtuel, auquel cas + c'est ce dernier fichier qui sera utilisé.

Exemple diff --git a/docs/manual/mod/mod_nw_ssl.xml.fr b/docs/manual/mod/mod_nw_ssl.xml.fr index 66f6eb5617c..5f4f7a398a4 100644 --- a/docs/manual/mod/mod_nw_ssl.xml.fr +++ b/docs/manual/mod/mod_nw_ssl.xml.fr @@ -1,4 +1,4 @@ - + @@ -32,39 +32,39 @@ NetWare seulement -

Ce module active le chiffrement SSL sur un port spécifique. Il - s'appuie sur la fonctionnalité de chiffrement SSL intégrée au - système d'exploitation Netware.

+

Ce module active le chiffrement SSL sur un port spécifique. Il + s'appuie sur la fonctionnalité de chiffrement SSL intégrée au + système d'exploitation Netware.

SecureListen Active le chiffrement SSL pour le port -spécifié +spécifié SecureListen [adresse-IP:]num-port nom-certificat [MUTUAL] server config -

Cette directive permet de spécifier le port et le nom de - certificat de style eDirectory qui seront utilisés pour activer le - chiffrement SSL. En outre, un troisième paramètre optionnel permet +

Cette directive permet de spécifier le port et le nom de + certificat de style eDirectory qui seront utilisés pour activer le + chiffrement SSL. En outre, un troisième paramètre optionnel permet d'activer l'authentification mutuelle.

NWSSLTrustedCerts -Liste de certificats clients supplémentaires +Liste de certificats clients supplémentaires NWSSLTrustedCerts nom-fichier [nom-fichier] ... server config -

Cette directive permet de spécifier une liste de fichiers (au - format DER) contenant des certificats clients utilisés lors de - l'établissement d'une connexion SSL mandatée. Chaque certificat - client utilisé par un serveur doit être enregistré séparément dans +

Cette directive permet de spécifier une liste de fichiers (au + format DER) contenant des certificats clients utilisés lors de + l'établissement d'une connexion SSL mandatée. Chaque certificat + client utilisé par un serveur doit être enregistré séparément dans son propre fichier .der.

@@ -72,15 +72,15 @@ spécifié NWSSLUpgradeable Permet de promouvoir une connexion non SSL au statut de -connexion SSL à la demande +connexion SSL à la demande NWSSLUpgradeable [adresse-IP:]num-port server config -

Cette directive permet de promouvoir une connexion établie sur - l'adresse IP et/ou le port spécifiés au statut de connexion SSL à la - demande du client. L'adresse et/ou le port doivent avoir été définis - au préalable par une directive Cette directive permet de promouvoir une connexion établie sur + l'adresse IP et/ou le port spécifiés au statut de connexion SSL à la + demande du client. L'adresse et/ou le port doivent avoir été définis + au préalable par une directive Listen.

diff --git a/docs/manual/mod/mod_proxy_ajp.xml.fr b/docs/manual/mod/mod_proxy_ajp.xml.fr index 3b01012a851..36bf317365c 100644 --- a/docs/manual/mod/mod_proxy_ajp.xml.fr +++ b/docs/manual/mod/mod_proxy_ajp.xml.fr @@ -1,4 +1,4 @@ - + @@ -33,20 +33,20 @@ Disponible depuis la version 2.1 d'Apache -

Ce module nécessite le chargement de Ce module nécessite le chargement de mod_proxy. Il fournit le support du Protocole Apache - JServ version 1.3 (nommé dans la suite de ce document + JServ version 1.3 (nommé dans la suite de ce document AJP13).

-

Pour être en mesure d'exploiter le protocole AJP13, - il est donc nécessaire de charger les modules +

Pour être en mesure d'exploiter le protocole AJP13, + il est donc nécessaire de charger les modules mod_proxy et mod_proxy_ajp.

Avertissement -

N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les +

N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les serveurs mandataires ouverts sont dangereux non seulement pour - votre réseau, mais aussi pour l'Internet au sens large.

+ votre réseau, mais aussi pour l'Internet au sens large.

@@ -56,8 +56,8 @@ d'environnement
Utilisation

Ce module permet de mandater en inverse un serveur d'application - d'arrière-plan (comme Apache Tomcat) qui utilise le protocole AJP13. - Son utilisation est similaire à celle d'un mandataire inverse HTTP, + d'arrière-plan (comme Apache Tomcat) qui utilise le protocole AJP13. + Son utilisation est similaire à celle d'un mandataire inverse HTTP, mais s'appuie sur le prefixe ajp:// :

Mandataire inverse simple @@ -66,8 +66,8 @@ d'environnement -

On peut aussi configurer un répartiteur de charge :

- Mandataire inverse avec répartiteur de charge +

On peut aussi configurer un répartiteur de charge :

+ Mandataire inverse avec répartiteur de charge <Proxy balancer://cluster> BalancerMember "ajp://app1.example.com:8009" loadfactor=1 @@ -78,143 +78,143 @@ ProxyPass "/app" "balancer://cluster/app" -

Notez qu'en général, la directive Notez qu'en général, la directive ProxyPassReverse n'est pas - nécessaire. La requête AJP inclut l'en-tête host original fourni - au mandataire, et le serveur d'application est sensé générer des - en-têtes auto-référençants relatifs à cet hôte ; aucune réécriture - n'est donc nécessaire.

+ nécessaire. La requête AJP inclut l'en-tête host original fourni + au mandataire, et le serveur d'application est sensé générer des + en-têtes auto-référençants relatifs à cet hôte ; aucune réécriture + n'est donc nécessaire.

La situation la plus courante dans laquelle la directive ProxyPassReverse est nécessaire se + module="mod_proxy">ProxyPassReverse est nécessaire se rencontre lorsque le chemin de l'URL au niveau du mandataire est - différente de celle du serveur d'arrière-plan. Dans ce cas, un - en-tête redirect peut être réécrit relativement à l'URL de l'hôte - original (et non du serveur d'arrière-plan ajp:// URL) + différente de celle du serveur d'arrière-plan. Dans ce cas, un + en-tête redirect peut être réécrit relativement à l'URL de l'hôte + original (et non du serveur d'arrière-plan ajp:// URL) ; par exemple :

- Réécriture d'un chemin mandaté + Réécriture d'un chemin mandaté ProxyPass "/apps/foo" "ajp://backend.example.com:8009/foo" ProxyPassReverse "/apps/foo" "http://www.example.com/foo" -

Il est cependant préférable en général de déployer l'application - sur le serveur d'arrière-plan avec le même chemin que sur le +

Il est cependant préférable en général de déployer l'application + sur le serveur d'arrière-plan avec le même chemin que sur le mandataire.

Variables d'environnement -

Les variables d'environnement dont le nom possède le préfixe +

Les variables d'environnement dont le nom possède le préfixe AJP_ sont transmises au serveur original en tant - qu'attributs de requête AJP (le préfixe AJP_ étant supprimé du nom - de la clé).

+ qu'attributs de requête AJP (le préfixe AJP_ étant supprimé du nom + de la clé).

Vue d'ensemble du protocole -

Le protocole AJP13 est orienté paquet. Le format - binaire a été préféré, probablement pour des raisons de +

Le protocole AJP13 est orienté paquet. Le format + binaire a été préféré, probablement pour des raisons de performances, au format texte pourtant plus lisible. Le serveur web communique avec le conteneur de servlets sur une connexion TCP. Pour - diminuer la charge induite par le processus de création de socket, + diminuer la charge induite par le processus de création de socket, le serveur web va tenter d'utiliser des connexions TCP persistantes - avec le conteneur de servlets, et de réutiliser les connexions - pendant plusieurs cycles requêtes/réponse.

-

Lorsqu'une connexion a été assignée à une requête particulière, - elle ne sera utilisée pour aucune autre jusqu'à ce que le cycle de - traitement de la requête se soit terminé. En d'autres termes, il n'y - a pas de multiplexage des requêtes sur une connexion. Ceci se - traduit par un code beaucoup plus simple à chaque extrémité de la - connexion, un nombre plus important de connexions étant cependant - ouvertes en même temps.

+ avec le conteneur de servlets, et de réutiliser les connexions + pendant plusieurs cycles requêtes/réponse.

+

Lorsqu'une connexion a été assignée à une requête particulière, + elle ne sera utilisée pour aucune autre jusqu'à ce que le cycle de + traitement de la requête se soit terminé. En d'autres termes, il n'y + a pas de multiplexage des requêtes sur une connexion. Ceci se + traduit par un code beaucoup plus simple à chaque extrémité de la + connexion, un nombre plus important de connexions étant cependant + ouvertes en même temps.

Lorsque le serveur web a ouvert une connexion vers le conteneur - de servlets, celle-ci peut se trouver dans l'un des états suivants + de servlets, celle-ci peut se trouver dans l'un des états suivants :

    -
  • Idle
    Aucune requête n'est traitée sur cette +
  • Idle
    Aucune requête n'est traitée sur cette connexion.
  • Assigned
    La connexion fait l'objet d'un traitement de - requête.
  • + requête.
-

Lorsqu'une connexion est assignée au traitement d'une requête - particulière, les informations de base de cette dernière (comme les - en-têtes HTTP, etc...) sont envoyées sur la connexion sous une forme - très condensée (par exemple les chaînes courantes sont codées sous - forme d'entiers). Vous trouverez des détails sur ce format plus - loin dans la structure des paquets de requête. Si la requête possède - un corps (content-length > 0), il est envoyé dans un - paquet séparé immédiatement après.

-

A ce moment, le conteneur est probablement prêt à traiter la - requête. Au cours de ce traitement, il peut renvoyer les messages +

Lorsqu'une connexion est assignée au traitement d'une requête + particulière, les informations de base de cette dernière (comme les + en-têtes HTTP, etc...) sont envoyées sur la connexion sous une forme + très condensée (par exemple les chaînes courantes sont codées sous + forme d'entiers). Vous trouverez des détails sur ce format plus + loin dans la structure des paquets de requête. Si la requête possède + un corps (content-length > 0), il est envoyé dans un + paquet séparé immédiatement après.

+

A ce moment, le conteneur est probablement prêt à traiter la + requête. Au cours de ce traitement, il peut renvoyer les messages suivants au serveur web :

    -
  • SEND_HEADERS
    Renvoie un jeu d'en-têtes au navigateur.
  • -
  • SEND_BODY_CHUNK
    Renvoie un tronçon de corps de requête au +
  • SEND_HEADERS
    Renvoie un jeu d'en-têtes au navigateur.
  • +
  • SEND_BODY_CHUNK
    Renvoie un tronçon de corps de requête au navigateur.
  • -
  • GET_BODY_CHUNK
    Reçoit un autre tronçon de données de la - requête si elle n'a pas encore été transmise intégralement. Ce type - de transmission est nécessaire car les paquets possèdent une taille - maximale fixe, et des quantités quelconques de données peuvent être - contenues dans le corps de la requête (pour un chargement de - fichier, par exemple). Notez que cela n'a rien à voir avec le - transfert HTTP fractionné.
  • +
  • GET_BODY_CHUNK
    Reçoit un autre tronçon de données de la + requête si elle n'a pas encore été transmise intégralement. Ce type + de transmission est nécessaire car les paquets possèdent une taille + maximale fixe, et des quantités quelconques de données peuvent être + contenues dans le corps de la requête (pour un chargement de + fichier, par exemple). Notez que cela n'a rien à voir avec le + transfert HTTP fractionné.
  • END_RESPONSE
    Termine le cycle du traitement de la - requête.
  • + requête.
-

Chaque message est associé à un paquet de données formaté - différemment. Voir plus loin les structures des paquets de réponses - pour plus de détails.

+

Chaque message est associé à un paquet de données formaté + différemment. Voir plus loin les structures des paquets de réponses + pour plus de détails.

Structure de base des paquets -

Ce protocole hérite en partie de XDR, mais il diffère sur de +

Ce protocole hérite en partie de XDR, mais il diffère sur de nombreux points (pas d'alignement sur 4 bits, par exemple).

-

AJP13 utilise les octets selon leur ordre d'arrivée par le réseau - pour tous les types de données.

-

Le protocole comporte quatre types de données : octets, booléens, - entiers et chaînes de caractères.

+

AJP13 utilise les octets selon leur ordre d'arrivée par le réseau + pour tous les types de données.

+

Le protocole comporte quatre types de données : octets, booléens, + entiers et chaînes de caractères.

Octet
Un seul octet.
-
Booléen
+
Booléen
Un seul octet, 1 = vrai, 0 = faux. L'utilisation d'autres valeurs non nulles (dans le style C) peut fonctionner dans certains cas, mais pas dans certains autres..
Entier
-
Un nombre compris entre 0 et 2^16 (32768), stocké - sur 2 octets en débutant par l'octet de poids forts.
-
Chaîne
-
Une chaîne de taille variable (longueur limitée à 2^16). Elle - est codée comme suit : les deux premiers octets représentent la - longueur de la chaîne, les octets suivants constituent la chaîne +
Un nombre compris entre 0 et 2^16 (32768), stocké + sur 2 octets en débutant par l'octet de poids forts.
+
Chaîne
+
Une chaîne de taille variable (longueur limitée à 2^16). Elle + est codée comme suit : les deux premiers octets représentent la + longueur de la chaîne, les octets suivants constituent la chaîne proprement dite (y compris le '\0' final). Notez que la longueur - encodée dans les deux premiers octets ne prend pas en compte le - '\0' final, de la même manière que strlen. Cela peut - prêter à confusion du point de vue de Java qui est surchargé de - déclarations d'autoincrémentation étranges destinées à traiter + encodée dans les deux premiers octets ne prend pas en compte le + '\0' final, de la même manière que strlen. Cela peut + prêter à confusion du point de vue de Java qui est surchargé de + déclarations d'autoincrémentation étranges destinées à traiter ces terminateurs. Je suppose que le but dans lequel cela a - été conçu ainsi était de permettre au code C d'être plus efficace - lors de la lecture de chaînes en provenance du conteneur de - servlets -- avec le caractère \0 final, le code C peut transmettre - des références dans un seul tampon, sans avoir à effectuer de - copie. En l'absence du caractère \0 final, le code C doit + été conçu ainsi était de permettre au code C d'être plus efficace + lors de la lecture de chaînes en provenance du conteneur de + servlets -- avec le caractère \0 final, le code C peut transmettre + des références dans un seul tampon, sans avoir à effectuer de + copie. En l'absence du caractère \0 final, le code C doit effectuer une copie afin de pouvoir tenir compte de sa notion de - chaîne.
+ chaîne.
Taille du paquet -

Selon la majorité du code, la taille maximale du paquet est de - 8 * 1024 bytes (8K). La taille réelle du paquet est - encodée dans l'en-tête.

+

Selon la majorité du code, la taille maximale du paquet est de + 8 * 1024 bytes (8K). La taille réelle du paquet est + encodée dans l'en-tête.

-
En-têtes de paquet -

Les paquets envoyés par le serveur vers le conteneur commencent - par 0x1234. Les paquets envoyés par le conteneur vers - le serveur commencent par AB (c'est à dire le code - ASCII de A suivi du code ASCII de B). Ensuite, vient un entier (codé - comme ci-dessus) représentant la longueur des données transmises. - Bien que ceci puisse faire croire que la taille maximale des données - est de 2^16, le code définit en fait ce maximum à 8K.

+
En-têtes de paquet +

Les paquets envoyés par le serveur vers le conteneur commencent + par 0x1234. Les paquets envoyés par le conteneur vers + le serveur commencent par AB (c'est à dire le code + ASCII de A suivi du code ASCII de B). Ensuite, vient un entier (codé + comme ci-dessus) représentant la longueur des données transmises. + Bien que ceci puisse faire croire que la taille maximale des données + est de 2^16, le code définit en fait ce maximum à 8K.

@@ -232,7 +232,7 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" - +
Contenu 0x12 0x34Taille des données (n)Taille des données (n) Data
@@ -254,15 +254,15 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" Contenu A B - Taille des données (n) + Taille des données (n) Data

Pour la plupart des paquets, le premier octet de la charge utile - encode le type de message, à l'exception des paquets contenant un - corps de requête envoyés du serveur vers le conteneur -- ils - comportent un en-tête standard (0x1234 suivi de la taille - du paquet), mais celui-ci n'est suivi d'aucun préfixe.

+ encode le type de message, à l'exception des paquets contenant un + corps de requête envoyés du serveur vers le conteneur -- ils + comportent un en-tête standard (0x1234 suivi de la taille + du paquet), mais celui-ci n'est suivi d'aucun préfixe.

Le serveur web peut envoyer les messages suivants au conteneur de servlets :

@@ -274,39 +274,39 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" - - + - - + + - + - - - + +
2Fait suivre la requêteDébute le cycle de traitement de la requête avec les données + Fait suivre la requêteDébute le cycle de traitement de la requête avec les données qui suivent.
7ArrêtLe serveur web demande au conteneur de s'arrêter.ArrêtLe serveur web demande au conteneur de s'arrêter.
8 PingLe serveur web demande au conteneur de prendre le contrôle - (phase de connexion sécurisée).Le serveur web demande au conteneur de prendre le contrôle + (phase de connexion sécurisée).
10 CPingLe serveur web demande au conteneur de répondre rapidement + Le serveur web demande au conteneur de répondre rapidement avec un CPong.
noneDonnéesTaille (2 octets) et les données correspondantes.DonnéesTaille (2 octets) et les données correspondantes.
-

À des fins de sécurité, le conteneur n'effectuera réellement son - Arrêt que si la demande provient de la machine par - laquelle il est hébergé.

-

Le premier paquet Données est envoyé immédiatement - après le paquet Faire suivre la requête par le serveur +

À des fins de sécurité, le conteneur n'effectuera réellement son + Arrêt que si la demande provient de la machine par + laquelle il est hébergé.

+

Le premier paquet Données est envoyé immédiatement + après le paquet Faire suivre la requête par le serveur web.

Le conteneur de servlets peut envoyer les types de messages suivants au serveur web :

@@ -319,43 +319,43 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" 3 - Envoi d'un tronçon de corps - Envoi d'un tronçon de corps depuis le conteneur de servlets + Envoi d'un tronçon de corps + Envoi d'un tronçon de corps depuis le conteneur de servlets vers le serveur web (et probablement vers le navigateur). 4 - Envoie les en-têtes - Envoi des en-têtes de réponse depuis le conteneur de + Envoie les en-têtes + Envoi des en-têtes de réponse depuis le conteneur de servlets vers le serveur web (et probablement vers le navigateur). 5 - Fin de la réponse - Marque la fin de la réponse (et par conséquent du cycle de - traitement de la requête). + Fin de la réponse + Marque la fin de la réponse (et par conséquent du cycle de + traitement de la requête). 6 - Réception du tronçon de corps suivant - Réception de la suite des données de la requête si elles - n'ont pas encore été entièrement transmises. + Réception du tronçon de corps suivant + Réception de la suite des données de la requête si elles + n'ont pas encore été entièrement transmises. 9 - Réponse CPong - La réponse à une requête CPing + Réponse CPong + La réponse à une requête CPing -

Chacun des messages ci-dessus possède une structure interne - différente dont vous trouverez les détails ci-dessous.

+

Chacun des messages ci-dessus possède une structure interne + différente dont vous trouverez les détails ci-dessous.

Structure des paquets de -requête -

Pour les messages de type Faire suivre la requête depuis +requête +

Pour les messages de type Faire suivre la requête depuis le serveur vers le conteneur :

 AJP13_FORWARD_REQUEST :=
@@ -373,18 +373,18 @@ AJP13_FORWARD_REQUEST :=
     attributes      *(attribut_name attribute_value)
     request_terminator (byte) OxFF
     
-

Les request_headers possèdent la structure suivante +

Les request_headers possèdent la structure suivante :

 req_header_name :=
-    sc_req_header_name | (string)  [voir ci-dessous pour la manière dont
-    ceci est interprété]
+    sc_req_header_name | (string)  [voir ci-dessous pour la manière dont
+    ceci est interprété]
 
 sc_req_header_name := 0xA0xx (integer)
 
 req_header_value := (string)
 
-

Les attributes sont optionnels et possèdent la +

Les attributes sont optionnels et possèdent la structure suivante :

 attribute_name := sc_a_name | (sc_a_req_attribute string)
@@ -392,18 +392,18 @@ attribute_name := sc_a_name | (sc_a_req_attribute string)
 attribute_value := (string)
 
     
-

Un des en-têtes les plus importants est +

Un des en-têtes les plus importants est content-length, car il indique si le conteneur doit ou - non attendre un autre paquet immédiatement.

-
Description détaillée de la requête que le serveur + non attendre un autre paquet immédiatement.</p> + <section><title>Description détaillée de la requête que le serveur fait suivre vers le conteneur
-
Préfixe de la requête -

Pour toutes les requêtes, ce préfixe est 2. Voir ci-dessus pour - les détails des autres codes de préfixes.

+
Préfixe de la requête +

Pour toutes les requêtes, ce préfixe est 2. Voir ci-dessus pour + les détails des autres codes de préfixes.

-
Méthode -

La méthode HTTP, encodée sous la forme d'un seul octet :

+
Méthode +

La méthode HTTP, encodée sous la forme d'un seul octet :

@@ -434,26 +434,26 @@ attribute_value := (string)
Nom commandeCode
OPTIONS1
BASELINE_CONTROL26
MKACTIVITY27
-

Les versions futures d'ajp13 pourront transmettre des méthodes - supplémentaires, même si elles ne font pas partie de cette +

Les versions futures d'ajp13 pourront transmettre des méthodes + supplémentaires, même si elles ne font pas partie de cette liste.

protocol, req_uri, remote_addr, remote_host, server_name, server_port, is_ssl -

Les significations de ces éléments sont triviales. Ils sont tous - obligatoires et seront envoyés avec chaque requête.

+

Les significations de ces éléments sont triviales. Ils sont tous + obligatoires et seront envoyés avec chaque requête.

-
En-têtes +
En-têtes

La structure de request_headers est la suivante - : tout d'abord, le nombre d'en-têtes num_headers est - encodé, suivi d'une liste de paires nom d'en-tête + : tout d'abord, le nombre d'en-têtes num_headers est + encodé, suivi d'une liste de paires nom d'en-tête req_header_name / valeur req_header_value. - Les noms d'en-têtes courants sont codés sous forme d'entiers afin de - gagner de la place. Si le nom d'en-tête ne fait partie de la liste - des en-têtes courants, il est encodé normalement (une chaîne de - caractères préfixée par la taille). La liste des en-têtes courants - sc_req_header_name avec leurs codes se présente comme - suit (il sont tous sensibles à la casse) :

+ Les noms d'en-têtes courants sont codés sous forme d'entiers afin de + gagner de la place. Si le nom d'en-tête ne fait partie de la liste + des en-têtes courants, il est encodé normalement (une chaîne de + caractères préfixée par la taille). La liste des en-têtes courants + sc_req_header_name avec leurs codes se présente comme + suit (il sont tous sensibles à la casse) :

@@ -477,39 +477,39 @@ attribute_value := (string)
NomValeur du codeNom du code
accept0xA001SC_REQ_ACCEPT
referer0xA00DSC_REQ_REFERER
user-agent0xA00ESC_REQ_USER_AGENT
-

Le code Java qui lit ceci extrait l'entier représenté par les +

Le code Java qui lit ceci extrait l'entier représenté par les deux premiers octets, et si le premier octet est - '0xA0', il utilise l'entier représenté par le deuxième - octet comme index d'un tableau de noms d'en-têtes. Si le premier - octet n'est pas 0xA0, l'entier représenté par les deux - octets est considéré comme la longueur d'une chaîne qui est alors + '0xA0', il utilise l'entier représenté par le deuxième + octet comme index d'un tableau de noms d'en-têtes. Si le premier + octet n'est pas 0xA0, l'entier représenté par les deux + octets est considéré comme la longueur d'une chaîne qui est alors lue.

-

Ceci ne peut fonctionner que si aucun nom d'en-tête ne possède - une taille supérieure à 0x9FFF (==0xA000 - 1), ce qui +

Ceci ne peut fonctionner que si aucun nom d'en-tête ne possède + une taille supérieure à 0x9FFF (==0xA000 - 1), ce qui est vraisemblable, bien qu'un peu arbitraire.

Note: - L'en-tête content-length est extrêmement important. - S'il est présent et non nul, le conteneur considère que la requête - possède un corps (une requête POST, par exemple), et lit - immédiatement le paquet suivant dans le flux d'entrée pour extraire + L'en-tête content-length est extrêmement important. + S'il est présent et non nul, le conteneur considère que la requête + possède un corps (une requête POST, par exemple), et lit + immédiatement le paquet suivant dans le flux d'entrée pour extraire ce corps.
Attributs -

Les attributs préfixés par ? (par exemple +

Les attributs préfixés par ? (par exemple ?context) sont tous optionnels. Chacun d'eux est - représenté par un octet correspondant au type de l'attribut et par - sa valeur (chaîne ou entier). Ils peuvent être envoyés dans un ordre + représenté par un octet correspondant au type de l'attribut et par + sa valeur (chaîne ou entier). Ils peuvent être envoyés dans un ordre quelconque (bien que le code C les envoie dans l'ordre ci-dessous). - Un code de terminaison spécial est envoyé pour signaler la fin de la + Un code de terminaison spécial est envoyé pour signaler la fin de la liste des attributs optionnels. La liste des codes est la suivante :

- - @@ -525,39 +525,39 @@ attribute_value := (string)
InformationValeur codeType de valeurNote
?context0x01-Non implémenté +
?context0x01-Non implémenté actuellement
?servlet_path0x02-Non implémenté +
?servlet_path0x02-Non implémenté actuellement
?remote_user0x03String
are_done0xFF-request_terminator

context et servlet_path ne sont pas - définis actuellement par le code C, et la majorité du code Java - ignore complètement ce qui est envoyé par l'intermédiaire de ces - champs (il va même parfois s'interrompre si une chaîne est - envoyée après un de ces codes). Je ne sais pas si c'est une bogue ou - une fonctionnalité non implémentée, ou tout simplement du code - obsolète, mais en tout cas, il n'est pris en charge par aucune des - deux extrémités de la connexion.

+ définis actuellement par le code C, et la majorité du code Java + ignore complètement ce qui est envoyé par l'intermédiaire de ces + champs (il va même parfois s'interrompre si une chaîne est + envoyée après un de ces codes). Je ne sais pas si c'est une bogue ou + une fonctionnalité non implémentée, ou tout simplement du code + obsolète, mais en tout cas, il n'est pris en charge par aucune des + deux extrémités de la connexion.

remote_user et auth_type concernent probablement l'authentification au niveau HTTP, et contiennent le nom de l'utilisateur distant ainsi que le type d'authentification - utilisée pour établir son identité (à savoir Basic, Digest).

+ utilisée pour établir son identité (à savoir Basic, Digest).

query_string, ssl_cert, ssl_cipher et ssl_session contiennent les - éléments HTTP et HTTPS correspondants.

-

jvm_route est utilisé dans le cadre des sessions - persistantes, en associant une session utilisateur à une instance - Tomcat particulière en présence de plusieurs répartiteurs de + éléments HTTP et HTTPS correspondants.

+

jvm_route est utilisé dans le cadre des sessions + persistantes, en associant une session utilisateur à une instance + Tomcat particulière en présence de plusieurs répartiteurs de charge.

-

Au delà de cette liste de base, tout autre attribut - supplémentaire peut être envoyé via le code - req_attribute 0x0A. Une paire de chaînes - représentant le nom et la valeur de l'attribut est envoyée - immédiatement après chaque instance de ce code. Les variables - d'environnement sont transmises par cette méthode.

-

Enfin, lorsque tous les attributs ont été transmis, le - terminateur d'attributs, 0xFF, est envoyé. Ce dernier - indique à la fois la fin de la liste d'attributs et la fin du paquet - de la requête

+

Au delà de cette liste de base, tout autre attribut + supplémentaire peut être envoyé via le code + req_attribute 0x0A. Une paire de chaînes + représentant le nom et la valeur de l'attribut est envoyée + immédiatement après chaque instance de ce code. Les variables + d'environnement sont transmises par cette méthode.

+

Enfin, lorsque tous les attributs ont été transmis, le + terminateur d'attributs, 0xFF, est envoyé. Ce dernier + indique à la fois la fin de la liste d'attributs et la fin du paquet + de la requête

Structure du paquet de la -réponse +réponse

Pour les messages que le conteneur peut renvoyer au serveur.

@@ -576,8 +576,8 @@ AJP13_SEND_HEADERS :=
   response_headers *(res_header_name header_value)
 
 res_header_name :=
-    sc_res_header_name | (string)   [voir ci-dessous pour la manière
-    dont ceci est interprété]
+    sc_res_header_name | (string)   [voir ci-dessous pour la manière
+    dont ceci est interprété]
 
 sc_res_header_name := 0xA0 (byte)
 
@@ -592,19 +592,19 @@ AJP13_GET_BODY_CHUNK :=
   prefix_code       6
   requested_length  (integer)
     
-
Détails:
-
Envoi d'un tronçon de corps -

Le tronçon se compose essentiellement de données binaires et est - renvoyé directement au navigateur.

+
Détails:
+
Envoi d'un tronçon de corps +

Le tronçon se compose essentiellement de données binaires et est + renvoyé directement au navigateur.

-
Envoi des en-têtes -

Les code et message d'état correspondent aux code et message HTTP +

Envoi des en-têtes +

Les code et message d'état correspondent aux code et message HTTP habituels (par exemple 200 et OK). Les - noms d'en-têtes de réponses sont codés de la même façon que les noms - d'en-têtes de requêtes. Voir ci-dessus le codage des en-têtes pour - plus de détails à propos de la manière dont les codes se distinguent - des chaînes.
- Les codes des en-têtes courants sont ::

+ noms d'en-têtes de réponses sont codés de la même façon que les noms + d'en-têtes de requêtes. Voir ci-dessus le codage des en-têtes pour + plus de détails à propos de la manière dont les codes se distinguent + des chaînes.
+ Les codes des en-têtes courants sont ::

@@ -619,30 +619,30 @@ AJP13_GET_BODY_CHUNK :=
NomValeur code
Content-Type0xA001
Status0xA00A
WWW-Authenticate0xA00B
-

La valeur de l'en-tête est codée immédiatement après le code ou - la chaîne du nom d'en-tête.

+

La valeur de l'en-tête est codée immédiatement après le code ou + la chaîne du nom d'en-tête.

-
Fin de la réponse -

Signale la fin de ce cycle de traitement de requête. Si le - drapeau reuse est à true (toute valeur autre que +

Fin de la réponse +

Signale la fin de ce cycle de traitement de requête. Si le + drapeau reuse est à true (toute valeur autre que 0 en langage C pur), cette - connexion TCP peut être réutilisée pour traiter de nouvelles - requêtes entrantes. Si reuse est à false - (==0), la connexion sera fermée.

+ connexion TCP peut être réutilisée pour traiter de nouvelles + requêtes entrantes. Si reuse est à false + (==0), la connexion sera fermée.

-
Réception d'un tronçon de corps -

Le conteneur réclame la suite des données de la requête (dans le - cas où la taille du corps était trop importante pour pouvoir être - contenue dans le premier paquet envoyé, où lorsque la requête est - fractionnée). Le serveur va alors envoyer un paquet contenant une - quantité de données correspondant au minimum de la - request_length, la taille maximale de corps envoyée - (8186 (8 Koctets - 6)), et le nombre réel d'octets - restants à envoyer pour ce corps de requête.
- S'il ne reste plus de données à transmettre pour ce corps de requête - (c'est à dire si le conteneur de servlets tente de lire au delà de +

Réception d'un tronçon de corps +

Le conteneur réclame la suite des données de la requête (dans le + cas où la taille du corps était trop importante pour pouvoir être + contenue dans le premier paquet envoyé, où lorsque la requête est + fractionnée). Le serveur va alors envoyer un paquet contenant une + quantité de données correspondant au minimum de la + request_length, la taille maximale de corps envoyée + (8186 (8 Koctets - 6)), et le nombre réel d'octets + restants à envoyer pour ce corps de requête.
+ S'il ne reste plus de données à transmettre pour ce corps de requête + (c'est à dire si le conteneur de servlets tente de lire au delà de la fin du corps), le serveur va renvoyer un paquet vide - dont la charge utile est de longueur 0 et se présentant sous la + dont la charge utile est de longueur 0 et se présentant sous la forme (0x12,0x34,0x00,0x00).