drupal 8 – ¿Cómo configuro CORS?

Pregunta:

Drupal 8 tiene un servicio web RESTful incorporado en el núcleo y desde 8.2 no necesitamos el módulo cors .

Ahora, para usar los servicios, solo habilitamos y configuramos el archivo default.service.yml como se especifica aquí

Sin embargo, no pude configurar esta configuración para permitir el acceso al servicio web en otro dominio.

Mi configuración actual de service.yml para cors es:

cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['x-csrf-token,authorization,content-type,accept,origin,x-requested-with']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['POST, GET, OPTIONS, DELETE, PUT']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: false
    # Sets the Access-Control-Max-Age header.
    maxAge: 1000
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: false

Busqué en Google para encontrar una configuración más detallada sobre esto, pero no pude encontrar una.

Estoy creando esto para el desarrollo de pruebas en dos dominios diferentes.

Uso del entorno de desarrollo pantheon para servicios web y dominio .dev personalizado localhost para consumir esos servicios.

El acceso al servicio funciona bien con la extensión Chrome CORS.

Respuesta:

Me encontré con esto recientemente en Pantheon, y espero que esto ayude si aún no lo ha resuelto.

cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with', 'access-control-allow-origin','x-allowed-header','*']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['*']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['http://localhost/','http://localhost:3000','http://localhost:3001','http://localhost:3002','*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: false
    # Sets the Access-Control-Max-Age header.
    maxAge: false
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: true

Algunas cosas a tener en cuenta …

Con respecto a la ubicación del archivo en Pantheon, asegúrese de que su archivo service.yml esté en / sites / default vs just / sites. Tenía la impresión errónea de que funcionaría en ambos lugares. Solo funcionará si está en el directorio / sites / default.

Observe la lista separada por comas de allowedHeaders, cada uno en su propio conjunto de comillas. Originalmente tenía una sola cadena como la que tiene en su ejemplo anterior, y falló innumerables veces antes de que detectara la sutil diferencia. Estoy bastante seguro de que allowedMethods funciona de la misma manera si específicamente desea enumerar sus métodos.

Tenga en cuenta también que, si bien mi fragmento de código funcionará bien para el desarrollo en un entorno de pruebas de Pantheon, es probable que desee bloquear un poco más las cosas antes de entrar en producción. Con Pantheon que ofrece HTTPS, también querrá asegurarse de usarlo si va a pasar información a través de los encabezados. Espero que esto le ayude a usted si todavía tiene problemas o a alguien más que se topó con ellos en el camino.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım