✦ Oplossingen · Browser- en verbindingsfouten

ERR_CACHE_MISS: bevestig het opnieuw indienen van het formulier

ERR_CACHE_MISS verschijnt als je teruggaat naar een pagina na het versturen van een formulier. Zo los je het op als bezoeker en voorkom je het als ontwikkelaar.

Zo ziet de foutmelding eruit

  • ERR_CACHE_MISS
  • net::ERR_CACHE_MISS
  • Confirm Form Resubmission
  • Bevestig het opnieuw indienen van het formulier

Waarom gebeurt dit?

ERR_CACHE_MISS zie je meestal nadat je een formulier hebt verstuurd en daarna op de terugknop drukt of de pagina vernieuwt. Een formulier wordt vaak verstuurd met een POST-verzoek: de browser stuurt gegevens naar de server, bijvoorbeeld een bestelling of een inlog. Wil je naar zo’n pagina terug, dan kan de browser die niet zomaar uit zijn cache halen. Hij zou het formulier opnieuw moeten versturen, en dat doet Chrome niet ongevraagd.

Chrome toont daarom ‘Confirm Form Resubmission’ met de code ERR_CACHE_MISS. Dat is een bescherming: opnieuw versturen kan betekenen dat een bestelling, betaling of bericht twee keer wordt verwerkt. Het is dus geen storing van je computer, maar een gevolg van hoe de website het formulier afhandelt.

Ontwikkelaars zien net::ERR_CACHE_MISS ook in de console of het tabblad Netwerk, bijvoorbeeld bij pagina’s met Cache-Control: no-store, bij een uitgeschakelde cache in de ontwikkelaarstools of in een app met een ingebouwde webweergave. Daar is het vaak een bijverschijnsel en niet de echte fout.

Zo herken je dit probleem

  • De melding komt na de terugknop of na vernieuwen, op een pagina die je bereikte door een formulier te versturen.
  • Een gewone pagina openen via een link of de adresbalk werkt wel.
  • Krijg je bij het versturen zelf een foutpagina, dan is het een andere fout, bijvoorbeeld 405 Method Not Allowed of 413 Request Entity Too Large.
  • Blijft de site tussen pagina’s heen en weer springen, dan gaat het om ERR_TOO_MANY_REDIRECTS.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Kies bewust of je opnieuw wilt versturen

    Druk niet zomaar op vernieuwen en bevestig niet automatisch. Ging het om een bestelling, betaling of bericht, controleer dan eerst in je mail of account of het al gelukt is. Opnieuw versturen kan een dubbele bestelling of betaling opleveren.

  2. Open de pagina opnieuw via het adres

    Wil je de pagina alleen nog eens zien, klik dan in de adresbalk en druk op Enter, of open de pagina via het menu van de site. Dan vraagt de browser de pagina op met een gewoon GET-verzoek en wordt er niets opnieuw verstuurd.

  3. Wis de cache en test zonder extensies

    Komt de melding ook op pagina’s zonder formulier, wis dan de browsergegevens via Instellingen › Privacy en beveiliging › Browsegegevens wissen (kies afbeeldingen en bestanden in het cachegeheugen). Test daarna in een incognitovenster; daar staan extensies standaard uit. Werkt het daar wel, zet extensies één voor één weer aan.

  4. Ontwikkelaar: kijk of ‘Disable cache’ aan staat

    In de ontwikkelaarstools van Chrome (F12) staat op het tabblad Network een vinkje Disable cache. Zolang de ontwikkelaarstools openstaan en dat vinkje aan staat, wordt niets uit de cache gehaald en zie je sneller net::ERR_CACHE_MISS. Zet het uit als je het gedrag van een gewone bezoeker wilt zien.

  5. Ontwikkelaar: gebruik het Post/Redirect/Get-patroon

    De structurele oplossing is het Post/Redirect/Get-patroon (PRG). Verwerk het formulier, en stuur de browser daarna met een redirect naar een gewone pagina, bijvoorbeeld een bedankpagina. De browser haalt die met GET op. Terug of vernieuwen herhaalt dan alleen die GET en verstuurt het formulier niet opnieuw. Gebruik statuscode 303 (See Other); die zegt expliciet dat de vervolgpagina met GET moet worden opgehaald.

    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // 1. gegevens controleren en verwerken
        // 2. daarna doorsturen naar een gewone pagina
        header('Location: /bedankt/', true, 303);
        exit;
    }
  6. Ontwikkelaar: controleer de Cache-Control-headers

    Met Cache-Control: no-store mag de browser een pagina nergens bewaren, dus ook niet voor de terugknop. Dat is goed voor pagina’s met persoonlijke gegevens, maar op gewone pagina’s geeft het onnodig vaak een nieuw verzoek of een melding. Kijk in het tabblad Network welke headers je pagina meestuurt, en gebruik no-store alleen waar het nodig is.

    # alleen voor pagina's met gevoelige gegevens
    Cache-Control: no-store
    
    # gewone pagina, wel steeds controleren bij de server
    Cache-Control: no-cache
  7. Ontwikkelaar: maak verwerking dubbel-veilig

    Ook met PRG kan iemand twee keer op de verzendknop klikken. Geef een formulier een eenmalige sleutel (een token in een verborgen veld) en weiger een tweede verzoek met dezelfde sleutel. Zo voorkom je dubbele bestellingen, ook als de bezoeker toch opnieuw verstuurt.

Let op: Bevestig ‘opnieuw indienen’ niet bij een betaling of bestelling voordat je hebt gecontroleerd of de eerste poging al gelukt is.

Wanneer schakel je hulp in?

  • Klanten melden dubbele bestellingen, aanvragen of betalingen op je website.
  • Je formulieren tonen deze melding na elke verzending en je weet niet waar de verwerking zit.
  • Je wilt het Post/Redirect/Get-patroon invoeren in een bestaande site of webshop zonder iets te breken.
  • De melding verschijnt ook bij gewone pagina’s en je vermoedt een fout in de cache-instellingen van de server.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Is ERR_CACHE_MISS gevaarlijk?

Nee, het is een bescherming van de browser. Het risico zit alleen in het opnieuw versturen van een formulier, omdat een actie dan twee keer kan worden uitgevoerd.

Hoe kom ik van ‘Confirm Form Resubmission’ af?

Open de pagina opnieuw via de adresbalk of een link in plaats van vernieuwen. Blijvend oplossen kan alleen de websitebouwer, met een redirect na het versturen.

Waarom zie ik net::ERR_CACHE_MISS in de console?

Vaak omdat ‘Disable cache’ in de ontwikkelaarstools aan staat of een pagina met no-store wordt teruggehaald. Meestal is het een bijverschijnsel; kijk of er een andere fout naast staat.

Moet ik mijn browser opnieuw installeren?

Nee. Het ligt aan hoe de website het formulier afhandelt, niet aan je browser. Cache wissen helpt alleen als de melding ook op gewone pagina’s verschijnt.