CORS (Cross-Origin Resource Sharing) é um recurso de segurança dos navegadores que controla quais domínios podem acessar recursos de um servidor diferente daquele que serviu a página. É como uma lista de permissões para evitar acessos não autorizados.
Por que o CORS existe?
O objetivo do CORS é proteger recursos de sites contra acessos maliciosos. Ele evita que outros domínios consumam dados sem autorização.
Nota: O CORS não previne ataques CSRF (Cross-Site Request Forgery). Requisições POST feitas por formulários, por exemplo, não são controladas por ele.
Requisições simples vs complexas
Nem todas as requisições estão sujeitas ao CORS. Para serem consideradas "simples", precisam atender a estas condições:
-
O
Content-Typedeve ser:application/x-www-form-urlencodedmultipart/form-datatext/plain
-
O método HTTP deve ser:
GETPOSTHEAD
Métodos como
PUT,PATCHouDELETE, ou headers personalizados, tornam a requisição "complexa" e sujeita a verificações adicionais.
Como o CORS funciona?
Para requisições complexas, o navegador faz uma verificação prévia (preflight):
-
Envia uma requisição
OPTIONSao servidor perguntando o que é permitido. -
O servidor responde com headers, como:
Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers
O navegador basicamente pergunta: "Posso acessar?" E o servidor responde com o que é permitido.
Principais headers do CORS
Access-Control-Allow-Origin: Define quais domínios podem acessar os recursos.Access-Control-Allow-Methods: Lista os métodos HTTP permitidos.Access-Control-Allow-Headers: Indica quais headers personalizados podem ser usados.Access-Control-Allow-Credentials: Permite cookies e headers de autenticação em requisições cross-origin.
Use este header com cuidado: só aceita o valor
trueou não deve ser incluído.
Conclusão
O CORS é essencial para proteger aplicações web e garantir que apenas origens confiáveis acessem seus recursos. Saber como ele funciona ajuda a configurar APIs de forma segura e eficiente. E aí, pronto para aplicar no seu próximo projeto?