CORS
sigladesenvolvimento websegurança
Significa: Cross-Origin Resource Sharing
O mecanismo do navegador que decide se uma página web pode fazer requisições a uma origem diferente.
Por padrão, a política de mesma origem impede que uma página de um site leia respostas de outro; o Cross-Origin Resource Sharing é como um servidor opta por permitir acessos específicos entre origens. Para qualquer coisa além das requisições mais simples, o navegador primeiro pede permissão com um preflight - uma requisição OPTIONS que o servidor precisa responder corretamente antes de a verdadeira ser enviada. Entender mal essa dança em dois tempos está por trás de boa parte das dores de cabeça de "bloqueado por CORS".
O CORS é um mecanismo do navegador, e entender esse único fato resolve a maior parte da confusão em torno dele. Ele não protege o seu servidor; protege os usuários de terem suas credenciais usadas silenciosamente por um site que eles não pretendiam autorizar. A política de mesma origem bloqueia leituras entre origens por padrão, e o CORS é a exceção controlada que um servidor pode conceder.
O preflight é o que surpreende quem desenvolve. Para qualquer coisa além das requisições simples, o navegador primeiro envia uma requisição OPTIONS perguntando se a requisição real é permitida, e só prossegue se a resposta autorizar. Então uma requisição que falha e nunca aparece nos logs do servidor com o método esperado costuma ser um preflight recusado ou mal tratado.
A configuração perigosa é refletir a origem solicitante permitindo credenciais. A especificação proíbe o curinga junto com credenciais por um bom motivo, e devolver de volta qualquer origem que perguntou produz o mesmo efeito driblando a verificação. Essa combinação significa que qualquer site pode fazer requisições autenticadas ao seu e ler as respostas, que é justamente a vulnerabilidade que o CORS existe para impedir, e não uma forma de satisfazê-lo.
Também conhecido como: cors, cross-origin resource sharing, same-origin policy