Je souhaite abandonner les en-têtes qui ne sont pas valides dans mon Application Load Balancer.
Brève description
L'Application Load Balancer utilise l'attribut routing.http.drop_invalid_header_fields.enabled pour abandonner les en-têtes HTTP qui ne sont pas valides. La valeur par défaut de l'attribut est FAUX.
Si la valeur par défaut de l'attribut est définie sur VRAI, l'Application Load Balancer abandonne les en-têtes HTTP qui ne sont pas valides. Si la valeur de l'attribut est FAUX, l’équilibreur de charge achemine les en-têtes vers les cibles contenant la requête d'origine.
Remarque : Elastic Load Balancing exige que tous les noms d'en-tête de message enregistrés soient conformes à l'expression régulière [-A-Za-z0-9]+. Chaque nom d'en-tête est composé de caractères alphanumériques ou de tirets.
Vérifier que l'attribut drop_invalid_header_field fonctionne
Effectuez une capture de paquets côté serveur. Lorsque l'attribut est désactivé, l'Application Load Balancer transmet les en-têtes HTTP qui ne sont pas valides aux serveurs backend. Lorsque l'attribut est activé, l'équilibreur de charge transmet uniquement les en-têtes valides aux serveurs backend. Les en-têtes qui ne sont pas valides sont abandonnés.
Utiliser Wireshark pour voir les en-têtes HTTP côté serveur (attribut désactivé)
Transmettez un en-tête +agent: world dans une requête CURL depuis une machine cliente. Notez que cet en-tête utilise une valeur qui n'est pas valide :
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
X-Forwarded-For: x.x.x.x\r\n
X-Forwarded-Proto: http\r\n
X-Forwarded-Port: 80\r\n
Host: xxxxxxxx.elb.amazonaws.com\r\n
X-Amzn-Trace-Id: Root=xxxxxxxxxx\r\n
User-Agent: curl/8.4.0\r\n
Accept: */*\r\n
+agent: world\r\n
Cette sortie provient de la capture Wireshark côté serveur. L'Application Load Balancer transmet l'en-tête qui n'est pas valide au serveur backend.
Utiliser Wireshark pour voir les en-têtes HTTP côté serveur (attribut activé)
Transmettez un en-tête +agent: world dans une requête CURL depuis une machine cliente. Notez que cet en-tête utilise une valeur qui n'est pas valide :
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
X-Forwarded-For: x.x.x.x\r\n
X-Forwarded-Proto: http\r\n
X-Forwarded-Port: 80\r\n
Host: xxxxxxxx.elb.amazonaws.com\r\n
X-Amzn-Trace-Id: Root=xxxxxxxxxx\r\n
User-Agent: curl/8.4.0\r\n
Accept: */*\r\n
Lorsque l'attribut est activé, l'Application Load Balancer envoie la requête aux serveurs backend. Cependant, comme le montre cette sortie côté serveur, l'équilibreur de charge abandonne les en-têtes qui ne sont pas valides.
Informations connexes
Attributs de l'équilibreur de charge