Configurar políticas de uso compartido de recursos de origen cruzado con NetScaler Ingress Controller

Last published : Oct 02, 2026
NetScaler proporciona una Definición de Recurso Personalizado (CRD) denominada CRD de CORS para Kubernetes. Puede utilizar la CRD de CORS para configurar las políticas de uso compartido de recursos de origen cruzado (CORS) con NetScaler Ingress Controller en el NetScaler.

¿Qué es CORS?

El uso compartido de recursos de origen cruzado es un mecanismo que permite al navegador determinar si una aplicación web específica puede compartir recursos con otra aplicación web de un origen diferente. Permite a los usuarios solicitar recursos (por ejemplo, imágenes, fuentes y vídeos) de dominios externos al dominio original.

CORS pre-vuelo

Antes de que un navegador web permita a Javascript emitir una solicitud POST a una URL, realiza una solicitud pre-flight. Una solicitud pre-vuelo es una solicitud simple al servidor con la misma URL utilizando el método OPTIONS en lugar de POST. El navegador web comprueba los encabezados HTTP en busca de encabezados relacionados con CORS para determinar si se permite la operación POST en nombre del usuario.
Solicitud CORS

Definición de CRD de CORS

La CRD de CORS está disponible en el repositorio de GitHub de NetScaler Ingress Controller en: cors-crd.yaml. La CRD de CORS proporciona atributos para las diversas opciones necesarias para definir la política de CORS en el Ingress NetScaler que actúa como puerta de enlace de API. Los atributos obligatorios incluyen: servicenames, allow_origin, allow_methods y allow_headers.
Los siguientes son los atributos proporcionados en la CRD de CORS:
Atributo Descripción
ingressclass Especifica la clase de entrada para que solo el controlador de entrada asociado a la clase de entrada especificada procese el recurso. De lo contrario, todos los controladores del clúster procesarán este recurso.
servicenames Especifica la lista de servicios de Kubernetes a los que desea aplicar las políticas CORS.
allow_origin Especifica la lista de orígenes permitidos. El origen entrante se examina con esta lista.
allow_methods Especifica la lista de métodos permitidos como parte del protocolo CORS.
allow_headers Especifica la lista de encabezados permitidos como parte del protocolo CORS.
max_age Especifica el número de segundos que se puede almacenar en caché la información proporcionada por los encabezados Access-Control-Allow-Methods y Access-Control-Allow-Headers. El valor predeterminado es 86400.
allow_credentials Especifica si la respuesta se puede compartir cuando el modo de credenciales de la solicitud es "include". El valor predeterminado es 'true'.

Implementar el CRD de CORS

Realice lo siguiente para implementar el CRD de CORS:
  1. Descargue el CRD de CORS.
  2. Implemente el CRD de CORS mediante el siguiente comando:
    kubectl create -f cors-crd.yaml
    Por ejemplo:
    $ 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

Cómo escribir una configuración de política CORS

Después de haber implementado el CRD de CORS proporcionado por NetScaler en el clúster de Kubernetes, puede definir la configuración de la política de CORS en un archivo .yaml. En el archivo .yaml, use corspolicy en el campo kind y en la sección spec añada los atributos del CRD de CORS según sus requisitos para la configuración de la política.
El siguiente archivo YAML aplica la política configurada a los servicios enumerados en el campo servicenames. NetScaler responde con un código de respuesta 200 OK para la solicitud de pre-vuelo si el origen es uno de los allow_origins . La respuesta incluye los allow_methods, allow_headers y max_age configurados.
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
Después de haber definido la configuración de la política, implemente el archivo .yaml utilizando los siguientes comandos:
user@master:~/cors$ kubectl create -f corspolicy-example.yaml
corspolicy.citrix.com/corspolicy-example created
El NetScaler Ingress Controller aplica la configuración de la política en el dispositivo NetScaler Ingress.