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:
- 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
Originindicando a origem da solicitação. O servidor, ao receber esse cabeçalho, pode responder com o cabeçalhoAccess-Control-Allow-Originindicando a origem permitida. - 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çalhoOrigin.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.