Configurer les politiques de partage de ressources inter-origines avec NetScaler Ingress Controller

Dernière publication : Oct 02, 2026
NetScaler fournit une définition de ressource personnalisée (CRD) appelée CRD CORS pour Kubernetes. Vous pouvez utiliser la CRD CORS pour configurer les politiques de partage de ressources inter-origines (CORS) avec NetScaler Ingress Controller sur le NetScaler.

Qu'est-ce que le CORS

Le partage de ressources inter-origines est un mécanisme qui permet au navigateur de déterminer si une application web spécifique peut partager des ressources avec une autre application web provenant d'une origine différente. Il permet aux utilisateurs de demander des ressources (par exemple, des images, des polices et des vidéos) à partir de domaines extérieurs au domaine d'origine.

Pré-requête CORS

Avant qu'un navigateur web n'autorise Javascript à émettre une requête POST vers une URL, il effectue une requête pre-flight. Une requête de pré-vérification est une simple requête envoyée au serveur avec la même URL en utilisant la méthode OPTIONS plutôt que POST. Le navigateur web vérifie les en-têtes HTTP pour les en-têtes liés au CORS afin de déterminer si l'opération POST au nom de l'utilisateur est autorisée.
Requête CORS

Définition de la CRD CORS

La CRD CORS est disponible dans le dépôt GitHub de NetScaler Ingress Controller à l'adresse : cors-crd.yaml. La CRD CORS fournit des attributs pour les différentes options nécessaires à la définition de la politique CORS sur le NetScaler Ingress qui agit comme une passerelle API. Les attributs requis incluent : servicenames, allow_origin, allow_methods et allow_headers.
Voici les attributs fournis dans la CRD CORS :
Attribut Description
ingressclass Spécifie la classe d'entrée afin que seul le contrôleur d'entrée associé à la classe d'entrée spécifiée traite la ressource. Sinon, tous les contrôleurs du cluster traiteront cette ressource.
servicenames Spécifie la liste des services Kubernetes auxquels vous souhaitez appliquer les politiques CORS.
allow_origin Spécifie la liste des origines autorisées. L'origine entrante est vérifiée par rapport à cette liste.
allow_methods Spécifie la liste des méthodes autorisées dans le cadre du protocole CORS.
allow_headers Spécifie la liste des en-têtes autorisés dans le cadre du protocole CORS.
max_age Spécifie le nombre de secondes pendant lesquelles les informations fournies par les en-têtes Access-Control-Allow-Methods et Access-Control-Allow-Headers peuvent être mises en cache. La valeur par défaut est 86400.
allow_credentials Spécifie si la réponse peut être partagée lorsque le mode d'authentification de la requête est "include". La valeur par défaut est 'true'.

Déployer le CRD CORS

Effectuez les étapes suivantes pour déployer le CRD CORS :
  1. Téléchargez le CRD CORS.
  2. Déployez le CRD CORS à l'aide de la commande suivante :
    kubectl create -f cors-crd.yaml
    Par exemple :
    $ kubectl create -f cors-crd.yaml
    customresourcedefinition.apiextensions.k8s.io/corspolicies.citrix.com created
    $ kubectl get crd
    NAME                         CREATED AT
    corspolicies.citrix.com      2021-05-21T20:01:13Z

Comment rédiger une configuration de politique CORS

Après avoir déployé la CRD CORS fournie par NetScaler dans le cluster Kubernetes, vous pouvez définir la configuration de la politique CORS dans un fichier .yaml. Dans le fichier .yaml, utilisez corspolicy dans le champ kind et, dans la section spec, ajoutez les attributs de la CRD CORS en fonction de vos exigences pour la configuration de la politique.
Le fichier YAML suivant applique la politique configurée aux services listés dans le champ servicenames. NetScaler répond avec un code de réponse 200 OK pour la requête de pré-vérification si l'origine est l'une des allow_origins . La réponse inclut les allow_methods, allow_headers et max_age configurés.
apiVersion: citrix.com/v1beta1
kind: corspolicy
metadata:
  name: corspolicy-example
spec:
  servicenames:
   - "cors-service"
  allow_origin:
   - "random1234.com"
   - "hotdrink.beverages.com"
  allow_methods:
   - "POST"
   - "GET"
   - "OPTIONS"
  allow_headers:
   - "Origin"
   - "X-Requested-With"
   - "Content-Type"
   - "Accept"
   - "X-PINGOTHER"
  max_age: 86400
  allow_credentials: true
Après avoir défini la configuration de la politique, déployez le fichier .yaml à l'aide des commandes suivantes :
user@master:~/cors$ kubectl create -f corspolicy-example.yaml
corspolicy.citrix.com/corspolicy-example created
Le contrôleur d'entrée NetScaler applique la configuration de la politique sur le périphérique NetScaler Ingress.