90 dias documentando a busca por um emprego - Dia 11: O diabo mora nos detalhes
Imagina a seguinte situação.
Você tem um portfólio com seus projetos e quer entender quais currículos enviados realmente fazem recrutadores acessarem seu site.
Passei um tempo pensando qual seria a melhor forma de fazer isso sem precisar alterar o projeto do portfólio em si. Depois de refletir bastante, decidi criar um mini encurtador de URL.
A ideia funcionaria assim: quando alguém acessasse algo como "meusite.com/3m4be", o sistema pegaria o ID encurtado presente na URL, descriptografaria, buscaria no banco de dados e redirecionaria para o destino correto. Caso o ID não fosse encontrado, por segurança, o usuário seria redirecionado para a página principal do meu portfólio, algo como "portfolio.meusite.com".
Na primeira vez que tentei acessar o encurtador, tudo funcionou como esperado.
O acesso foi salvo no banco de dados e o redirecionamento ocorreu corretamente.
Mas, como nem tudo são flores, logo percebi algo estranho.
Os acessos seguintes não estavam sendo contabilizados.
Depois de um tempo investigando, revisando código e logs, encontrei o culpado.
O maldito status code 301, que significa Moved Permanently.
Ao usar um redirecionamento permanente, o navegador simplesmente memoriza o destino e, nas próximas requisições, nem chega a consultar o servidor. O resultado? Os acessos futuros não eram contabilizados.
Um detalhe pequeno, quase invisível, que me fez refletir sobre como o diabo mora nos detalhes.
Esse detalhe me fez reforçar algo importante status codes não servem apenas para indicar sucesso ou erro, eles influenciam diretamente o comportamento dos navegadores, caches e da própria aplicação.