AZ Tools

Construtor de Cabeçalhos CORS

Rede

Constrói os cabeçalhos de resposta que um servidor precisa enviar pra satisfazer uma requisição cross-origin de um navegador. Inclui Allow-Origin, Allow-Methods, Allow-Headers, Expose-Headers, Allow-Credentials, Max-Age, e uma dica Vary: Origin. Sinaliza os foot-guns comuns: combinar * com credentials (navegadores bloqueiam), aceitar Origin: null (um atacante pode forjar), ou pedir pro navegador cachear o preflight por tempo irracionalmente longo.

Presets
Allow-Methods
Cabeçalhos de resposta
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 600
Vary: Origin

Aplique estes na resposta do preflight OPTIONS *e* da requisição real. Caches edge precisam de Vary: Origin se você ecoa Origin.

Como usar

  1. Comece de um preset que combine com seu cenário.
  2. Defina a origem (* pra totalmente público, ou ecoe o Origin da requisição server-side pra APIs com credentials).
  3. Escolha os métodos e cabeçalhos que seu endpoint realmente aceita — mais estreito é mais seguro.
  4. Copie os cabeçalhos pro seu servidor, edge worker, ou middleware do framework.

Perguntas frequentes

Posso usar * e credentials juntos?
Não. A spec fetch rejeita respostas que pareiam Access-Control-Allow-Origin: * com Access-Control-Allow-Credentials: true. Ou tira credentials, ou ecoa o Origin real da requisição server-side após validá-lo contra uma allow-list.
Por que a recomendação Vary: Origin?
Se você ecoa Origin no Allow-Origin, caches downstream devem variar sua resposta armazenada pelo cabeçalho Origin da requisição; senão podem servir a resposta CORS de um site pra requisição de outro site. Vary: Origin diz pros caches usarem aquele cabeçalho como chave.

Ferramentas relacionadas