Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
En-têtes HTTP et Application Load Balancers
Les demandes HTTP et les réponses HTTP utilisent des champs d'en-tête pour envoyer des informations concernant les messages HTTP. Les en-têtes HTTP sont ajoutés automatiquement. Les champs d'en-tête sont des paires nom-valeur dont les noms et les valeurs sont séparés par un signe deux points, et qui sont séparées entre elles par un retour chariot (CR) et un saut de ligne (LF). Un ensemble standard de champs d'en-tête HTTP est défini dans la section du RFC 2616 concernant les en-têtes de messageX-Forwarded
. Les Application Load Balancers prennent en charge les en-têtes X-Forwarded
suivants.
Pour plus d'informations sur les connexions HTTP, consultez la section Demande de routage dans le Guide de l'utilisateur Elastic Load Balancing.
En-têtes X-Forwarded
X-Forwarded-For
L'en-tête de demande X-Forwarded-For
vous aide à identifier l'adresse IP d'un client lorsque vous utilisez un équilibreur de charge HTTP ou HTTPS. Comme les équilibreurs de charge interceptent le trafic entre les clients et les serveurs, vos journaux d'accès au serveur ne contiennent que l'adresse IP de l'équilibreur de charge. Pour voir l'adresse IP du client, utilisez l'attribut routing.http.xff_header_processing.mode
. Cet attribut vous permet de modifier, de préserver ou de supprimer l'en-tête X-Forwarded-For
dans la demande HTTP avant que l'Application Load Balancer n'envoie la demande à la cible. Les valeurs possibles pour cet attribut sont append
, preserve
et remove
. La valeur par défaut de cet attribut est append
.
Important
L'X-Forwarded-For
en-tête doit être utilisé avec prudence en raison des risques de sécurité potentiels. Les entrées ne peuvent être considérées comme fiables que si elles sont ajoutées par des systèmes correctement sécurisés au sein du réseau.
Mode de traitement
Ajout
Par défaut, l'Application Load Balancer stocke l'adresse IP du client dans l'en-tête de demande X-Forwarded-For
et transmet l'en-tête à votre serveur. Si l'en-tête de demande X-Forwarded-For
n'est pas inclus dans la demande d'origine, l'équilibreur de charge en crée un avec l'adresse IP du client comme valeur de la demande. Sinon, l'équilibreur de charge ajoute l'adresse IP du client à l'en-tête existant, puis transmet l'en-tête à votre serveur. L'en-tête de demande X-Forwarded-For
peut contenir plusieurs adresses IP séparées par des virgules.
L'en-tête de demande X-Forwarded-For
a le format suivant :
X-Forwarded-For: client-ip-address
Voici un exemple d'en-tête de demande X-Forwarded-For
pour un client avec l'adresse IP 203.0.113.7
.
X-Forwarded-For: 203.0.113.7
Voici un exemple d'en-tête de X-Forwarded-For
demande pour un client dont l' IPv6 adresse est2001:DB8::21f:5bff:febf:ce22:8a2e
.
X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e
Lorsque l'attribut de préservation du port client (routing.http.xff_client_port.enabled
) est activé sur l'équilibreur de charge, l'en-tête de la demande X-Forwarded-For
inclut client-port-number
ajouté à client-ip-address
, séparés par deux points. L'en-tête prend alors la forme suivante :
IPv4 -- X-Forwarded-For: client-ip-address
:client-port-number
IPv6 -- X-Forwarded-For: [client-ip-address]
:client-port-number
Notez IPv6 en effet que lorsque l'équilibreur de charge ajoute le client-ip-address
à l'en-tête existant, il place l'adresse entre crochets.
Voici un exemple d'en-tête de X-Forwarded-For
demande pour un client dont l' IPv4 adresse 12.34.56.78
et le numéro de port sont8080
.
X-Forwarded-For: 12.34.56.78:8080
Voici un exemple d'en-tête de X-Forwarded-For
demande pour un client dont l' IPv6 adresse 2001:db8:85a3:8d3:1319:8a2e:370:7348
et le numéro de port sont8080
.
X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080
Préserver
Le mode preserve
de l'attribut garantit que l'en-tête X-Forwarded-For
de la demande HTTP n'est en aucun cas modifié avant son envoi aux cibles.
Remove (suppression)
Le mode remove
de l'attribut supprime l'en-tête X-Forwarded-For
de la demande HTTP avant qu'elle ne soit envoyée aux cibles.
Si vous activez l'attribut de préservation du port client (routing.http.xff_client_port.enabled
) et que vous sélectionnez également preserve
ou remove
pour l'attribut routing.http.xff_header_processing.mode
, Application Load Balancer remplace l'attribut de préservation du port client. Il conserve l'en-tête X-Forwarded-For
inchangé ou le supprime selon le mode que vous sélectionnez, avant de l'envoyer aux cibles.
Le tableau suivant présente des exemples d'en-tête X-Forwarded-For
que la cible reçoit lorsque vous sélectionnez le mode append
, preserve
ou remove
. Dans cet exemple, l'adresse IP du dernier saut est 127.0.0.1
.
Description de la demande | Exemple de demande | append | preserve | remove |
---|---|---|---|---|
La demande est envoyée sans en-tête XFF | GET /index.html HTTP/1.1 Host: example.com |
X-Forwarded-For: 127.0.0.1 |
Absent | Absent |
La demande est envoyée avec un en-tête XFF et une adresse IP du client. | GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For:
127.0.0.4 |
X-Forwarded-For: 127.0.0.4, 127.0.0.1 |
X-Forwarded-For: 127.0.0.4 |
Absent |
La demande est envoyée avec un en-tête XFF avec plusieurs adresses IP de clients. | GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For:
127.0.0.4, 127.0.0.8 |
X-Forwarded-For: 127.0.0.4, 127.0.0.8,
127.0.0.1 |
X-Forwarded-For: 127.0.0.4, 127.0.0.8 |
Absent |
X-Forwarded-Proto
L'en-tête de demande X-Forwarded-Proto
vous permet d'identifier le protocole (HTTP ou HTTPS) utilisé par un client pour se connecter à votre équilibreur de charge. Les journaux d'accès de votre serveur contiennent uniquement le protocole utilisé entre le serveur et l'équilibreur de charge ; ils ne comportent aucune information sur le protocole utilisé entre le client et l'équilibreur de charge. Pour déterminer le protocole utilisé entre le client et l'équilibreur de charge, utilisez l'en-tête de demande X-Forwarded-Proto
. Elastic Load Balancing stocke le protocole utilisé entre le client et l'équilibreur de charge dans l'en-tête de demande X-Forwarded-Proto
et transmet en même temps l'en-tête à votre serveur.
Votre application ou site web peut utiliser le protocole stocké dans l'en-tête de demande X-Forwarded-Proto
pour générer une réponse qui effectue une redirection vers l'URL appropriée.
L'en-tête de demande X-Forwarded-Proto
a le format suivant :
X-Forwarded-Proto: originatingProtocol
L'exemple suivant contient un en-tête de demande X-Forwarded-Proto
pour une demande provenant du client en tant que demande HTTPS :
X-Forwarded-Proto: https
X-Forwarded-Port
L'en-tête de demande X-Forwarded-Port
vous permet d'identifier le port de destination utilisé par le client pour se connecter à l'équilibreur de charge.