Solucione erros da política CORS
Corrija uma requisição que o navegador bloqueia pela política CORS adicionando o header Access-Control-Allow-Origin com uma regra da Response Phase.
Esta página trata de uma requisição entre origens que o navegador bloqueia pela política de Cross-Origin Resource Sharing (CORS), quando a resposta vem de uma aplicação na Azion. Para enviar os headers de CORS antes que o erro apareça, consulte Habilite CORS em uma aplicação.
Uma requisição é bloqueada com No Access-Control-Allow-Origin header is present
Uma página de um domínio requisita um recurso de outro domínio, e o navegador bloqueia a resposta.
O CORS usa headers HTTP para dar a uma página acesso a recursos de um servidor de origem diferente. O navegador bloqueia a resposta porque ela não traz um header Access-Control-Allow-Origin para a origem que fez a requisição.
O exemplo desta seção usa dois domínios:
http://a.domain.com/, o domínio que serve o recurso.http://b.domain.com/, o domínio da página que o requisita.
O navegador informa o erro neste formato:
Confirme o erro no navegador
Para encontrar a requisição bloqueada no Google Chrome:
- Selecione View > Developer > Developer tools.
- Selecione a aba Network.
- Selecione a primeira linha, page-cors-subdomain.a.html, e leia a Request URL no painel à direita.
- Na página, selecione Test CORS on click. Uma linha vermelha aparece na coluna Name.
- Passe o cursor sobre a linha page-cors-subdomain-a.txt e leia a dica.
- Selecione page-cors-subdomain-a.txt e leia os detalhes no painel à direita.
- Selecione a aba Console e depois Errors. A linha do erro de CORS mostra o domínio de origem e o domínio de destino.
Adicione o header com uma regra
A correção é uma regra da Response Phase na aplicação do domínio A. A regra devolve a origem da requisição no header Access-Control-Allow-Origin quando essa origem é o domínio B. Para o formato do argumento de um header, consulte Rules Engine para Applications.
Para criar a regra no Azion Console:
Acesse Azion Console > Applications e selecione a aplicação do domínio A, a.domain.com.
Na seção General, digite um Name.
Na seção Phase, selecione Response Phase.
Na seção Criteria, selecione ${http_origin} como variável e is_equal como operador, e digite http://b.domain.com como argumento. Não adicione a barra final (/).
Na seção Behaviors, selecione Add Response Header.
Digite Access-Control-Allow-Origin: ${http_origin} como argumento.
A regra aparece na aba Rules Engine, em Response.
Verifique a correção
Para testar a regra, sirva dois arquivos a partir do domínio A. A página page-cors-subdomain-a.html requisita o arquivo de texto quando você seleciona o botão dela:
O arquivo page-cors-subdomain-a.txt contém o texto que a página carrega:
Para conferir o resultado no Google Chrome:
- Selecione View > Developer > Developer tools.
- Selecione a aba Network.
- Selecione a primeira linha, page-cors-subdomain.a.html, e leia os detalhes no painel à direita.
- Na página, selecione Test CORS on click. A página mostra
You clicked! I belong to the domain a. Domain b shall call me. - Selecione a aba Console e depois Errors.
A lista Errors não mostra erro de CORS, e a resposta do domínio A chega à página do domínio B.
Chrome browser é uma marca registrada de Google LLC nos Estados Unidos e/ou em outros países.