Como corrigir erros da política de Cross-Origin Resource Sharing (CORS) na aplicação
Cross-Origin Resource Sharing (CORS) é um mecanismo que se utiliza de cabeçalhos do protocolo HTTP para dar permissão de acesso a determinados recursos que estão em uma origem diferente do documento em uso. No entanto, uma política de CORS pode bloquear a requisição de um recurso localizado em um domínio a partir de um outro domínio.
Para resolver esse erro, vamos utilizar o seguinte exemplo para guiar o passo a passo:
Domínios:
http://a.domain.com/
(origem)http://b.domain.com/
(destino)
Mensagem de erro:
Access to XMLHttpRequest at http://a.domain.com/page-cors-subdomain-a.txt
from origin http://b.domain.com
has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
Para resolver esse tipo de erro, você precisa configurar o browser no Azion Console usando o Rules Engine.
No Google Chrome, siga os passos:
- Selecione Ver > Desenvolvedor > Ferramentas para desenvolvedores.
- Selecione a aba Network.
- Clique na primeira linha page-cors-subdomain.a.html e observe as informações de Request URL apresentadas no painel localizado à direita.
- Clique em Test CORS on click e observe a linha vermelha na seção Name.
- Posicione o cursor sobre a legenda/linha page-cors-subdomain-a.txt e observe o texto da tooltip.
- Selecione page-cors-subdomain-a.txt e observe as informações apresentadas no painel localizado à direita.
- Selecione a aba Console > Erros e observe, na linha de erro do CORS, os domínios de origem e de destino.
Vá para a plataforma da Azion e siga os seguintes passos:
- Acesse o Console > Edge Application.
- Selecione a aplicação do domain A (a.domain) > Rules Engine.
- Clique no botão Add Rule para criar uma nova regra e selecione Response Phase.
- Nomeie sua regra.
- Selecione Response Phase.
- Na seção Criteria, preencha os campos com os seguintes conteúdos:
If
${http_origin}
is equalhttp://b-domain.com
(sem terminar em/
) - Na seção Behaviors, selecione o comportamento Add Response Header.
- Preencha o campo de argumento com
Access-Control-Allow-Origin: ${http_origin}
.
- Acesse o Real-Time Manager (RTM) > Edge Application.
- Selecione a aplicação do domain A (a.domain) > Rules Engine.
- Clique no botão Add Rule para criar uma nova regra e selecione Response Phase.
- Nomeie sua regra.
- Na seção Criteria, preencha os campos com os seguintes conteúdos:
If
${http_origin}
is equalhttp://b-domain.com
(sem terminar em/
) - Na seção Behaviors, selecione o comportamento Add Response Header.
- Preencha o campo de argumento com
Access-Control-Allow-Origin: ${http_origin}
.
Em seguida, vá para a página HTML e digite o seguinte código:
Por último, para validar que o erro foi corrigido, siga os seguintes passos:
- No Google Chrome, selecione Ver > Desenvolvedor > Ferramentas para desenvolvedores.
- Selecione a aba Network.
- Clique na primeira linha page-cors-subdomain.a.html e observe as informações apresentadas no painel localizado à direita da página.
- Clique em Test CORS on click e visualize a mensagem:
You clicked! I belong to the domain a. Domain b shall call me.
- Selecione a aba Console > Errors e verifique se não há erros apresentados.
Agora, a política de CORS está funcionando corretamente.
Trademarks
Chrome browser é uma marca registrada de Google LLC nos Estados Unidos e/ou outros países.