O Drupal 8 possui serviço web RESTful embutido no núcleo e, desde a versão 8.2, não precisamos do módulo cors .
Agora, para usar os serviços, apenas ativamos e configuramos o arquivo default.service.yml, conforme especificado aqui
No entanto, não foi possível definir esta configuração para permitir o acesso ao serviço da web em outro domínio.
Minha configuração atual service.yml para cors é:
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
Pesquisei no Google para encontrar configurações mais detalhadas sobre isso, mas não consegui encontrar uma.
Estou criando isso para o desenvolvimento de testes em dois domínios diferentes.
Usando o ambiente de desenvolvimento pantheon para serviços da Web e o domínio .dev personalizado de host local para consumir esses serviços.
Acesso ao serviço funcionando bem usando a extensão CORS do chrome.
fonte
Respostas:
Eu me deparei com isso recentemente no Pantheon, e espero que isso ajude, se você ainda não o resolveu.
Algumas coisas a serem observadas ...
Em relação à localização do arquivo no Pantheon, verifique se o arquivo service.yml está em / sites / default vs just / sites. Eu estava errado com a impressão de que funcionaria nos dois lugares. Só funcionará se estiver no diretório / sites / default.
Observe a lista separada por vírgula de allowedHeaders, cada um em seu próprio conjunto de aspas. Originalmente, eu tinha uma única string como você no exemplo acima e ela falhou inúmeras vezes antes de perceber a diferença sutil. Tenho certeza de que o allowedMethods funciona da mesma maneira se você deseja listar especificamente seus métodos.
Observe também que, embora meu snippet de código funcione bem no desenvolvimento de uma sandbox Pantheon, você provavelmente desejará bloquear as coisas um pouco mais antes de entrar em produção. Com o Pantheon oferecendo HTTPS, você também precisará usá-lo para passar informações pelos cabeçalhos. Espero que isso ajude você, se você ainda está tendo problemas ou alguém que o encontrou na estrada.
fonte
Encontre: ... / sites / default / default.services.yml
Faça uma cópia e renomeie a cópia para:
... / sites / default / services.yml
Encontre esta parte do código: cors.config: enabled: false
e substitua pelo seguinte - cors.config: enabled: true
Limpe o cache.
fonte
A seguinte configuração está funcionando para mim.
fonte
posedHeaders: true não é válido e causará Aviso: implode (): Argumentos inválidos transmitidos em Asm89 \ Stack \ CorsService-> addActualRequestHeaders () (linha 94 de / vendor / asm89 / stack-cors / src / Asm89 / Stack / CorsService. php) # 0 /web/core/includes/bootstrap.inc(584) Precisa ser falso ou um array com cabeçalhos permitidos para expor, consulte https://developer.mozilla.org/en-US/docs/Web/ HTTP / Headers / Access-Control-Expose-Headers
fonte