![Suspeito que o Chrome esteja enviando uma solicitação antes que o usuário a envie. Isso é possível?](https://rvso.com/image/1595492/Suspeito%20que%20o%20Chrome%20esteja%20enviando%20uma%20solicita%C3%A7%C3%A3o%20antes%20que%20o%20usu%C3%A1rio%20a%20envie.%20Isso%20%C3%A9%20poss%C3%ADvel%3F.png)
Estou desenvolvendo este site e notei um comportamento estranho no Chrome. Quando reinicio o Tomcat, ele recria o banco de dados (para testar porpuses) e, por conta disso, criei uma URL que preenche o banco de dados.
Acontece que às vezes, quando ainda estou digitando essa URL, verifico o log de acesso do Tomcats e lá está, a solicitação que eu não havia enviado foi enviada automaticamente, de alguma forma, enviada. Os logs de saída do servidor confirmam que esta "solicitação fantasma" foi enviada.
Se eu enviar o URL que estava digitando, a solicitação será repetida e, em seguida, recebo uma página de erro porque o banco de dados tem algumas restrições e os valores são repetidos.
Esse comportamento é de alguma forma esperado ou documentado em algum lugar (se for, por que é inconsistente?)? alguém experimentou algo semelhante a isso?
Responder1
Não sei se o Chrome faz solicitações antecipadamente, mas pode e não deve ser um problema.
Solicitações HTTP GET são consideradasidempotente, o que basicamente significa que fazer a solicitação várias vezes não deve ser diferente de fazer a solicitação apenas uma vez. Dessa forma, se o Chrome (ou qualquer outro navegador) quisesse fazer a solicitação GET antecipadamente para tentar pré-carregar a página para que ela parecesse carregar mais rápido quando o usuário realmente pressionasse enter, não deveria haver nenhum efeito negativo em fazê-lo.
Seu script para preencher o banco de dados não deve fazer nada no banco de dados quando é feito com uma solicitação GET e, em vez disso, aguardar uma solicitação POST. Para uma solicitação GET, basta gerar um formulário com um botão de envio no qual você pode clicar, o que fará a solicitação POST para preencher seu banco de dados.