Sobes.tech
Junior

O que é CORS?

sobes.tech IA

Resposta da IA

CORS (Cross-Origin Resource Sharing) — é um mecanismo que permite às páginas web solicitar recursos de outro domínio, porta ou protocolo diferente daquele de onde a página foi carregada. Isso é feito através de cabeçalhos HTTP adicionais.

Por padrão, os navegadores aplicam a política Same-Origin Policy (SOP), que impede scripts em uma página de acessar dados de outra origem (domínio, porta, protocolo). O CORS flexibiliza essa política de forma controlada, permitindo que o servidor indique explicitamente quais solicitações entre domínios são permitidas.

Como funciona o CORS:

  1. Solicitação simples: Se a solicitação atende a certos critérios (por exemplo, método GET ou POST, cabeçalhos específicos permitidos), o navegador envia a solicitação diretamente com um cabeçalho adicional Origin indicando a origem da solicitação. O servidor, ao receber esse cabeçalho, pode responder com o cabeçalho Access-Control-Allow-Origin indicando a origem permitida.
  2. Preflight: Para solicitações "não simples" (por exemplo, usando métodos PUT, DELETE, ou com cabeçalhos personalizados), o navegador envia primeiro uma solicitação preliminar (OPTIONS). Essa solicitação pergunta ao servidor se a solicitação principal é permitida. O servidor responde com cabeçalhos que indicam os métodos, cabeçalhos e fontes permitidos. Se o preflight for bem-sucedido, o navegador envia a solicitação real.

Cabeçalhos principais do CORS:

  • Origin: Enviado pelo navegador na solicitação, indica a fonte (domínio, porta, protocolo) da página que faz a solicitação.
  • Access-Control-Allow-Origin: Enviado pelo servidor na resposta, indica a fonte que pode receber a resposta. Pode ser um domínio específico, * (qualquer fonte), ou gerado dinamicamente com base no cabeçalho Origin.
  • Access-Control-Allow-Methods: Enviado pelo servidor em resposta ao preflight, indica os métodos HTTP permitidos (GET, POST, PUT, DELETE, etc.).
  • Access-Control-Allow-Headers: Enviado pelo servidor em resposta ao preflight, indica os cabeçalhos permitidos na solicitação.
  • Access-Control-Allow-Credentials: Enviado pelo servidor na resposta, indica se cookies e outras credenciais podem ser aceitos na solicitação.

Exemplo de cabeçalhos de resposta do servidor permitindo solicitações de https://example.com:

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization

O CORS é necessário para o funcionamento correto de muitas aplicações web que usam requisições AJAX entre domínios, como interação com APIs, carregamento de fontes, uso de Web Fonts com CDN, etc. A configuração adequada do CORS no servidor é fundamental para a segurança e funcionalidade da aplicação.