Кіріспе
Веб-құрылысын әзірлеу үлгісі - қайталама нысанды тапсырудан аулақ болу үшін Post/Redirect/Get (PRG) - бұл веб-құрылысын әзірлеу үлгісі, ол нысанды тапсырғаннан кейін көрсетілетін бетті зиянды әсерлерсіз қайта жүктеуге, бөлісуге немесе кітапшаға қоюға мүмкіндік береді, мысалы, нысанды басқа уақытта тапсыру. Веб-форма серверге HTTP POST сұранысы арқылы жіберілгенде, сервердің жауабын жаңарту әрекеті бастапқы POST мазмұнының қайта жіберілуіне әкелуі мүмкін, мүмкін веб-сатып алудың қайталануы сияқты қажетсіз нәтижелерге әкелуі мүмкін. Кейбір браузерлер пайдаланушыны POST сұранысын қайта беру туралы ескерту арқылы бұл тәуекелді азайтады. Бұл мәселені болдырмау үшін көптеген веб-жекешелер PRG үлгісін қолданады. Сервер мазмұнмен жауап берудің орнына POST сұрауына клиентті басқа жерге қайта бағыттау арқылы жауап береді. HTTP 1.1 спецификациясы HTTP 303 ("Басқа қараңыз") жауап кодын енгізді, бұл жағдайда браузерлер бастапқы POST сұранысын қайта жібермей сервердің жауабын қауіпсіз жаңарта алады. PRG үлгісі форманың қайталанғанын көрсететін барлық жағдайларды қарастыра алмайды. Мысалы, егер веб-пайдаланушы бастапқы тапсыру аяқталғанға дейін жаңартса, мүмкін сервердің кідірісіне байланысты, кейбір пайдаланушы агенттерінде қайталанған POST пайда болады.
Post/Redirect/Get (PRG) is a web development design pattern that lets the page shown after a form submission be reloaded, shared, or bookmarked without ill effects, such as submitting the form another time. When a web form is submitted to a server through an HTTP POST request, attempts to refresh the server response can cause the contents of the original POST to be resubmitted, possibly causing undesired results, such as a duplicate web purchase. Some browsers mitigate this risk by warning the user that they are about to re issue a POST request. To avoid this problem, many web developers use the PRG pattern—instead of responding with content, the server responds to a POST request by redirecting the client to another location. The HTTP 1.1 specification introduced the HTTP 303 ("See other") response code to ensure that in this situation, browsers can safely refresh the server response without causing the initial POST request to be resubmitted. The PRG pattern cannot address every scenario of duplicate form submission. For example, if a web user refreshes before the initial submission completes, possibly because of server lag, a duplicate POST occurs in certain user agents.
Бетбелгілер
Пайдаланушы агенттері (мысалы, браузерлер) HTTP сұранысының URL-ін ғана бетбелгі ретінде сақтайды. Осыған байланысты HTTP POST сұранысының денесіне негізделген жауап кітапша белгісі қойылмайды. PRG үлгісімен сұраудың URI-сі қауіпсіз түрде кітапшаға белгіленуі мүмкін.