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 de 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.
fuente
Respuestas:
Me encontré con esto hace poco en Pantheon, y espero que esto ayude si aún no lo has resuelto.
Algunas cosas a tener en cuenta ...
En cuanto a la ubicación del archivo en Pantheon, asegúrese de que su archivo service.yml esté en / sites / default vs just / sites. Estaba equivocado bajo la impresión de que funcionaría desde ambos lugares. Solo funcionará si está en el directorio / sites / default.
Observe la lista de comas permitidas separadas por comas cada una en su propio conjunto de citas. Originalmente tenía una sola cadena como usted en su ejemplo anterior, y falló innumerables veces antes de que percibiera la sutil diferencia. Estoy bastante seguro de que allowMethods 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 limitado de Pantheon, es probable que desee bloquear un poco más las cosas antes de entrar en producción. Con Pantheon ofreciendo HTTPS, también querrás asegurarte de usarlo si vas a pasar información a través de los encabezados. Espero que esto te ayude si aún tienes problemas o si alguien más se topó con ellos en el futuro.
fuente
Buscar: ... / sites / default / default.services.yml
Haga una copia y cambie el nombre de la copia a:
... / sites / default / services.yml
Encuentre esta parte del código: cors.config: enabled: false
y reemplace con lo siguiente - cors.config: enabled: true
Limpia el caché.
fuente
La siguiente configuración funciona para mí.
fuente
posedHeaders: true no es válido y causará Advertencia: implode (): argumentos no válidos pasados en Asm89 \ Stack \ CorsService-> addActualRequestHeaders () (línea 94 de / vendor / asm89 / stack-cors / src / Asm89 / Stack / CorsService. php) # 0 /web/core/includes/bootstrap.inc(584) Debe ser falso o una matriz con encabezados permitidos para exponer, ver https://developer.mozilla.org/en-US/docs/Web/ HTTP / Encabezados / Control de acceso-Exponer-Encabezados
fuente