„Confirmarea retrimiterii formularului” nu este de obicei o eroare a browserului. Apare atunci când încercați să reîncărcați o pagină la care s-a ajuns prin trimiterea datelor cu o solicitare HTTP POST. Repetarea acestei solicitări ar putea repeta și acțiunea, astfel încât browserul să solicite înainte de a trimite din nou formularul. Acest lucru este important pentru formularele de contact, comentarii, achiziții, plăți, modificări ale contului și orice altă acțiune care nu ar trebui să se execute accidental de două ori.

Dacă sunteți vizitator, cea mai sigură soluție este, în mod normal, să evitați actualizarea paginii cu rezultate, să confirmați dacă trimiterea a reușit deja și să reveniți la formularul original prin intermediul site-ului web, în loc să forțați o reîncărcare. Dacă dețineți site-ul web, soluția durabilă este să redirecționați cererile POST reușite către o pagină GET normală.
Ce cauzează retrimiterea formularului de confirmare?
Un formular HTML tradițional poate trimite date cu GET sau POST. POST plasează datele trimise în corpul cererii și este utilizat în mod obișnuit atunci când o cerere creează sau modifică ceva. Dacă serverul răspunde direct la acel POST cu pagina pe care o vizualizați, reîmprospătarea paginii înseamnă repetarea aceluiași POST. Prin urmare, browserul vă avertizează înainte de a-l retrimite.
Aceasta este diferită de o simplă eroare de conexiune. Avertismentul poate apărea chiar și atunci când prima trimitere a funcționat perfect. Înainte de a retrimite o comandă, o plată, o rezervare, un comentariu sau o solicitare de asistență, verificați dacă există o pagină de confirmare, o chitanță prin e-mail, istoricul contului sau alt semn că prima solicitare a fost deja finalizată.
Cum să remediați acest lucru ca vizitator al site-ului web
1. Anulați reîncărcarea și deschideți din nou formularul
Dacă avertismentul a apărut imediat după apăsarea butonului Reîmprospătare, alegeți Anulare în loc să continuați automat. Deschideți site-ul web din meniu, pagina principală, marcaj sau o filă nouă și navigați înapoi la formular. Acest lucru evită reluarea deliberată a solicitării POST anterioare.
Pentru un mesaj sau o aplicație lungă, copiați orice text mai aveți înainte de a părăsi pagina. Este posibil ca un site să nu restabilească ceea ce ați tastat după ce sesiunea se modifică.

2. Verificați dacă trimiterea inițială a reușit deja
Faceți acest lucru înainte de a introduce din nou aceleași informații. Un al doilea POST poate crea comentarii, bilete, rezervări sau taxe duplicate dacă site-ul nu oferă protecție împotriva duplicatelor. Dacă nu puteți stabili dacă o tranzacție de mare valoare a reușit, utilizați istoricul comenzilor site-ului sau contactați echipa de asistență în loc să faceți clic în mod repetat pe Trimitere.
3. Ștergeți datele site-ului numai dacă formularul este blocat
Cookie-urile și fișierele din cache defecte sau învechite pot cauza apariția în buclă a unor site-uri, pierderea unei sesiuni sau încărcarea unei pagini vechi. Ștergerea datelor poate fi de ajutor în aceste cazuri, dar nu este necesară doar pentru că ați actualizat un rezultat POST.
În Chrome pe computer, deschideți meniul cu trei puncte și alegeți Ștergeți datele de navigare . Google documentează opțiunile actuale, inclusiv cookie-urile/datele site-urilor și imaginile/fișierele memorate în cache, în ghidul său privind datele de navigare Chrome . Ștergerea cookie-urilor vă poate deconecta de la site-uri web, așa că utilizați cel mai restrâns domeniu de aplicare care rezolvă problema.

În Firefox, puteți șterge datele pentru site-ul curent din pictograma din stânga barei de adrese, apoi puteți alege Șterge modulele cookie și datele site-ului . Instrucțiunile Mozilla pentru datele site-ului Firefox explică, de asemenea, cum să eliminați datele pentru un anumit site sau pentru toate site-urile.
4. Dezactivați temporar extensiile dacă problema apare în mod neașteptat
Dacă un formular eșuează în mod repetat fără ca tu să îl actualizezi, testează extensiile care modifică paginile sau traficul de rețea, cum ar fi blocatoarele de conținut, instrumentele de confidențialitate, managerii de scripturi, extensiile VPN/proxy sau instrumentele de asistență pentru formulare. În Chrome, accesează Mai multe > Extensii > Gestionează extensiile și dezactivează temporar extensiile suspecte; ghidul de gestionare a extensiilor de la Google documentează controalele actuale.

În Firefox, deschideți Meniu > Add-on-uri și teme > Extensii și dezactivați extensiile pe rând. Mozilla oferă, de asemenea, pași oficiali pentru dezactivarea add-on-urilor Firefox . Reactivați orice nu are legătură cu problema.
Dacă avertismentul apare doar pe un singur site web
Dacă alte site-uri funcționează normal și acest avertisment reapare în mod constant după trimiterea unui anumit formular, fluxul formularului site-ului web este probabil problema principală. Schimbarea browserelor poate ascunde un simptom în unele cazuri, dar nu repară istoricul POST subiacent. Evitați trimiterile repetate și raportați problema proprietarului site-ului, dacă este necesar.
Proprietarii de site-uri web: utilizați POST/Redirect/GET
Metoda standard de a împiedica trimiterea cu succes a unui formular să devină pagina POST curentă a browserului este modelul POST/Redirect/GET . Procesați POST-ul pe server, apoi returnați o redirecționare către o adresă URL de confirmare separată. Un răspuns 303 See Other îi spune în mod specific browserului să preia resursa redirecționată cu GET. MDN notează că acest model permite unui client să vizualizeze o confirmare după POST fără a face ca refresh-ul să repete operațiunea originală.
POST /contact
HTTP/1.1 303 See Other
Location: /contact/thanks
GET /contact/thanks
Consultați referința MDN 303 See Other și ghidul său de redirecționare HTTP pentru comportamentul de schimbare a metodei. Nu utilizați o redirecționare 307 în acest scop atunci când doriți ca solicitarea ulterioară să devină GET, deoarece 307 păstrează metoda și corpul originale.
Nu schimbați fiecare formular POST în GET doar pentru a suprima avertismentul. GET este destinat regăsirii datelor și plasează valorile formularului în URL atunci când este utilizat de un formular HTML; nu este potrivit pentru parole sau acțiuni care modifică starea serverului. Documentația MDN pentru trimiterea formularelor explică diferențele practice dintre GET și POST.
JavaScript fetch()poate trimite un formular fără o navigare pe pagină întreagă, dar serverul ar trebui să protejeze în continuare operațiunile importante împotriva cererilor duplicate accidentale. Pentru formularele convenționale cu mai multe pagini, POST/Redirect/GET rămâne cea mai clară soluție pentru avertismentul de reîmprospătare.