Problemă
Primesc mai multe antete HTTP egale în răspunsurile unei aplicații web. Uneori sunt zeci de replici în funcție de scriptul numit.
Înființat
Este o aplicație mare și foarte veche bazată pe PHP. Este livrat folosind Apache HTTPD 2.4 (Debian) folosind php7_module modul.
Aplicația are un cod de bibliotecă care gestionează informațiile despre sesiune. În acest cod se împachetează manipularea cu sesiune_start();
și session_write_close();
.
Încercarea mea
Cercetare
Am citit despre problemă și ceea ce am învățat este că împachetarea se face pentru a debloca obiectul sesiune, astfel încât și alte părți ale aplicației să poată citi și scrie în el. Aceasta pare a fi o tehnică în multe aplicații.
Am citit, de asemenea, despre un bug în PHP care cauzează exact acest comportament. De fapt, au existat mai multe rapoarte de erori de-a lungul anilor pe care le-am găsit. Un exemplu de raport: https://bugs.php.net/bug.php?id=38104
Toate rapoartele sunt închise și rezolvate. Ar trebui să nu mai fie o eroare reală în PHP. Am citit, de asemenea, că se pare că se întâmplă doar atunci când utilizați modulul PHP Apache HTTPD și nu când apelați direct PHP.
PHP
Am încercat o soluție programatică în care doar iterez peste antetele de la sfârșitul scriptului „vizualizare” și mă asigur că există doar unul Set-Cookie
antet. Totuși, aceasta nu este o soluție reală, deoarece există sute de vizualizări și ar trebui să se întâmple pentru fiecare dintre acestea existente acum și în viitor.
Notă de antet HTTPD
Am încercat să folosesc mod_headers Notă
comanda de la Directiva antet, dar nu am reușit să o fac încă să funcționeze.
Notă de antet Set-Cookie saved_cookie
Antet dezactivat Set-Cookie
Set antet Set-Cookie „%{saved_cookie}n”
Nu am găsit exemple bune despre cum să-l folosesc. Nici eu nu știu dacă notele pot fi chiar folosite în acest fel.
Întrebare
Știe cineva o soluție despre cum să remediați acest lucru, poate cu o configurație a HTTPD sau orice se poate face o singură dată.