Primeiro Salto na Requisição
Para ver os cabeçalhos de uma requisição GET, sem mostrar o corpo na tela, use o comando curl -D -o /dev/null. Isso faz um GET, diferente de curl -I, que faz um HEAD. Sem -L, o curl para na primeira resposta de redirecionamento. Para acompanhar os redirecionamentos HTTP até a resposta final, use -L e um limite de saltos.
Exemplo de Laboratório
Salve o código abaixo como redirect-lab.mjs e execute node redirect-lab.mjs. O laboratório acima é um exemplo deliberadamente quebrado, servindo para demonstrar por que vale comparar os métodos, não para sugerir que HEAD e GET devam levar a destinos diferentes.
Interpretando os Testes de Verdade
Há três perguntas diferentes, e cada comando responde só a parte delas:
- Qual é o primeiro salto? Leia o código 3xx e o cabeçalho Location da primeira resposta. O valor pode ser relativo, como
/pagina-nova; nesse caso, ele é resolvido a partir da URL atual. - HEAD e GET concordam? Compare as respostas iniciais. Se não concordarem, investigue a aplicação, o proxy ou a CDN antes de publicar o link.
- Onde termina a cadeia HTTP? Use GET com
-Le confira cada resposta, a URL efetiva e o código final. Um 200 no fim significa que houve uma resposta bem-sucedida naquele ponto da cadeia HTTP; não prova que a página mostrada ao usuário seja o destino esperado.
Detalhes Importantes
- Uma página intermediária pode responder 200 e depois navegar por JavaScript ou por meta refresh. O curl não executa JavaScript como um navegador, e
-Lacompanha redirecionamentos HTTP, não todos os mecanismos de navegação de uma página. - Para links sob seu controle, a regra prática é simples: compare HEAD e GET, siga a cadeia HTTP com um limite e faça uma última verificação no navegador. São testes complementares, não três maneiras de obter a mesma resposta.
Conclusão
Para garantir a consistência do link curto, é crucial comparar HEAD e GET, além de seguir a cadeia HTTP até o destino final. Isso ajuda a evitar erros e garantir que o link curto levará ao destino esperado, independentemente de como a página é navegada.