Les en-têtes de réponse sortants envoyés par les nœuds Edge Security Acceleration (ESA) font partie des en-têtes de réponse HTTP transmis aux clients. En configurant les en-têtes de réponse sortants dans ESA, vous contrôlez les en-têtes renvoyés avec les ressources. ESA permet d'ajouter, de modifier et de supprimer des règles d'en-tête de réponse sortant afin de répondre à des exigences métier spécifiques.
Présentation de la fonctionnalité
Lorsqu'un client demande une ressource, la requête atteint d'abord ESA. Si la requête ne trouve pas de correspondance dans le cache du nœud ESA, une requête est envoyée au serveur d'origine pour récupérer les données. Une fois que le serveur d'origine a renvoyé les données, le nœud ESA modifie la réponse initiale selon les règles d'en-tête de réponse configurées, par exemple en ajoutant, remplaçant ou supprimant des champs spécifiques. Le nœud renvoie ensuite la ressource complète, y compris les en-têtes de réponse, au client afin de satisfaire aux exigences métier relatives au contrôle d'accès interdomaines et à l'optimisation des stratégies de mise en cache.
Scénarios
Indiquer au client le type de ressource du fichier de réponse ESA : par exemple, ajoutez l'en-tête de réponse
Content-Type: text/htmlpour informer le client que le fichier de réponse ESA est au format HTML, ce qui lui permet de l'afficher correctement.Activer l'accès aux ressources interorigines : lorsqu'un utilisateur demande une ressource depuis un nom de domaine sur ESA, activez l'accès interorigines en configurant l'en-tête de réponse
Access-Control-Allow-Origindans la réponse de ESA. Pour plus d'informations, consultez la rubrique Configurer le partage de ressources interorigines.Personnaliser le comportement de la réponse : ajoutez ou modifiez des en-têtes personnalisés pour ajuster le contenu et le format des réponses reçues par le client. Cela permet d'activer des fonctionnalités spécifiques ou un suivi adapté à vos besoins métier.
Remarques
Si plusieurs règles sont configurées, elles s'exécutent dans l'ordre où elles sont répertoriées, de haut en bas. Si plusieurs règles spécifient le même nom d'en-tête de réponse, une règle ultérieure écrase une règle antérieure. Ce comportement peut entraîner des résultats inattendus.
Exemple 1
La réponse initiale inclut l'en-tête
test:123.Une règle ajoute l'en-tête
test:321.
Si la réponse correspond à la règle, l'en-tête initial test:123 est écrasé par test:321.
Exemple 2
La réponse initiale inclut l'en-tête
test:123.Une règle ajoute l'en-tête
test:321, suivie d'une autre règle qui supprime l'en-têtetest.
Si la réponse correspond aux règles, l'en-tête initial test:123 est supprimé.
Procédure
Après avoir ajouté une règle, ESA fait correspondre et exécute les règles séquentiellement en fonction de la priorité d'exécution des règles chaque fois qu'un utilisateur demande une ressource.
Dans la console ESA, accédez à Sites web. Dans la colonne Websites, cliquez sur le site cible.
Dans le volet de navigation de gauche, choisissez .
Sélectionnez l'onglet Modify Response Header, cliquez sur l'élément ESA to Client, puis cliquez sur Create Rule.
Cliquez sur Create Rule. Dans la section If requests match..., définissez les critères de correspondance pour les requêtes des utilisateurs. Pour plus d'informations, consultez la rubrique Syntaxe des expressions de règle.
-
Dans la section Create Rule, sélectionnez une Operation, saisissez un Modify Response Header et une Response Header Value, puis cliquez sur Response Header Name.
Action
Mode
Description
Example
Add
Static
Ajoute l'en-tête de réponse spécifié à la réponse du serveur d'origine. Si un en-tête portant le même nom existe déjà, le nouvel en-tête l'écrase.
Pour ajouter un en-tête de réponse nommé
x-codeavec la valeurkey1, définissez Header Name surx-codeet Header Value surkey1.Add
Dynamic
La valeur de l'en-tête de réponse peut être une expression de règle.
Pour ajouter un en-tête de réponse nommé
Client-Ip-Geo-Locationavec la valeur dynamiqueip.geoip.countryqui enregistre le pays ou la région de l'adresse IP du client, définissez Header Name surClient-Ip-Geo-Locationet Header Value surip.geoip.country.Modify
Static
Modifie la valeur d'un en-tête de réponse spécifié dans la réponse du serveur d'origine.
Pour modifier la valeur de l'en-tête de réponse
x-codeenkey2, définissez Header Name surx-codeet Header Value surkey2.Modify
Dynamic
La valeur de l'en-tête de réponse peut être une expression de règle.
Pour modifier la valeur de l'en-tête de réponse
Client-Ip-Geo-Locationen la valeur dynamiqueip.geoip.country, définissez Header Name surClient-Ip-Geo-Locationet Header Value surip.geoip.country.Delete
—
Supprime toutes les instances de l'en-tête correspondant au nom d'en-tête spécifié de la réponse du serveur d'origine. L'opération de suppression est identique pour les modes statique et dynamique.
Pour supprimer l'en-tête de réponse
x-code, définissez Header Name surx-code.RemarqueVous ne pouvez pas configurer un nom d'en-tête commençant par
ali-swift,ali-esa-inner,x-swiftoux-site(la casse n'est pas prise en compte).Vous pouvez spécifier plusieurs valeurs dans le champ Header Value. Séparez les valeurs par une virgule (
,).L'action Modify modifie un en-tête de réponse existant et prend effet uniquement si un en-tête portant le nom spécifié existe dans la réponse initiale.
Exemple de configuration
Si vous utilisez OSS comme serveur d'origine et configurez CORS dans les consoles OSS et ESA, la configuration ESA écrase les paramètres CORS d'OSS.
Appliquer à toutes les requêtes
Cas d'utilisation
Autorisez toutes les requêtes provenant de votre site (example.com) à accéder aux ressources depuis n'importe quelle origine.
Étapes
Dans la console ESA, sélectionnez Sites web. Dans la colonne Website, cliquez sur le site cible.
Dans le volet de navigation de gauche, choisissez . Sur la page Website, cliquez sur l'onglet Modify Response Header. Définissez Response Header Position sur ESA to Client, puis cliquez sur le bouton Create Rule.

-
Sur la page Create Response Header Modification Rule, configurez les paramètres comme suit :
Rule Name : saisissez un nom de règle personnalisé, par exemple
rule-cors-for-all.If requests match... : sélectionnez All Requests.
-
Then execute... : configurez les paramètres suivants :
Type : sélectionnez Static.
Operation : sélectionnez Add.
Response Header Name : saisissez
Access-Control-Allow-Origin.Response Header Value : saisissez
*.

Résultat
Pour toute requête interorigine, ESA ajoute l'en-tête Access-Control-Allow-Origin: * à la réponse, permettant au navigateur d'afficher la ressource interorigine.

Appliquer à des requêtes spécifiques
Cas d'utilisation
Autorisez l'accès interorigine lorsque l'en-tête origin correspond à un sous-domaine de example.com via HTTP ou HTTPS. Par exemple :
origin:http://www.example.comorigin:https://www.example.comorigin:http://image.example.comorigin:https://image.example.com
La valeur de l'en-tête de réponse CORS doit correspondre à l'en-tête origin de la requête.
Étapes de configuration
Dans la console ESA, sélectionnez Sites web. Dans la colonne Website, cliquez sur le site cible.
Dans le volet de navigation de gauche, choisissez . Sur la page Transform Rules, cliquez sur l'onglet Website. Définissez Response Header Position sur Rules, puis cliquez sur le bouton Transform Rules.

-
Sur la page Transform Rules, configurez les paramètres comme suit :
Modify Response Header : saisissez un nom de règle personnalisé, par exemple
rule-cors-origin.-
ESA to Client : pour cet exemple, définissez la condition sur Create Rule Value of origin Create Response Header Modification Rule ^https?://(?:a-zA-Z0-9?\.)+example\.com$.
Vous pouvez également modifier directement l'expression comme suit :
(http.request.headers["origin"] matches "^https?://(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+example\.com$")RemarqueSi votre forfait ne prend pas en charge la correspondance avec des expressions régulières, utilisez l'opérateur Rule Name et répertoriez les valeurs d'en-tête d'origine autorisées.
Vous pouvez également modifier directement l'expression comme suit :
(http.request.headers["origin"] in {"http://www.example.com" "https://www.example.com" "http://image.example.com" "https://image.example.com"})
-
If requests match... : configurez les paramètres suivants :
Header : sélectionnez matches regex.
is in : sélectionnez Then execute....
Type : saisissez
Access-Control-Allow-Origin.Dynamic : saisissez
http.request.headers["origin"].

Résultat
Lorsque l'en-tête origin d'une requête interorigine correspond à la règle, ESA ajoute l'en-tête Access-Control-Allow-Origin avec la valeur issue de l'en-tête Origin du client. Le navigateur traite ensuite la réponse et affiche la ressource interorigine.

Description des paramètres d'en-tête de réponse
Paramètre d'en-tête de réponse | Description | Exemple |
Personnalisé | Permet d'ajouter des en-têtes de réponse personnalisés. Les noms d'en-tête personnalisés doivent respecter les exigences suivantes :
| Test-Header |
Cache-Control | Spécifie le mécanisme de mise en cache que les requêtes et réponses du client doivent suivre. | no-cache |
Content-Disposition | Spécifie le nom de fichier par défaut fourni lorsque le client enregistre le contenu demandé sous forme de fichier. | examplefile.txt |
Content-Type | Spécifie le type de contenu de l'objet de réponse. | text/plain |
Pragma | Pragma est un en-tête général défini dans HTTP/1,0. Il définit la manière dont les clients doivent mettre en cache les fichiers dans les réponses du serveur. | no-cache |
Access-Control-Allow-Origin | Spécifie quelles origines peuvent accéder à la ressource. Cet en-tête fait partie du mécanisme de partage de ressources interorigines (
|
|
Access-Control-Allow-Methods | Spécifie les méthodes de requête interorigine autorisées. Séparez plusieurs méthodes par des virgules | POST,GET |
Access-Control-Allow-Headers | Spécifie les en-têtes de requête interorigine autorisés. | X-Custom-Header |
Access-Control-Expose-Headers | Spécifie les en-têtes personnalisés auxquels le client peut accéder. | Content-Length |
Access-Control-Allow-Credentials | Indique si la réponse à la requête peut être exposée à la page.
| true |
Access-Control-Max-Age | Spécifie la durée, en secondes, pendant laquelle le client peut mettre en cache le résultat d'une requête préliminaire pour une ressource spécifique. | 600 |
Documentation connexe
Les fonctionnalités liées aux règles varient en termes de priorité effective, de réentrance et de granularité effective. Pour plus de détails, consultez la rubrique Caractéristiques des fonctionnalités basées sur des règles.