O aplicație PHP postează date XML cu curl; nimic deosebit, rezultatul arată ca (c/p, dar identificatorii și parolele s-au schimbat):
Gazdă: străină.gazdă.exemplu
Autorizare: Basic dGVzdDpnZWhlaW0=
User-Agent: ourhost HTTP-connector/1.0
Accept: */*
Referer: https://our.host.example/
Tip de conținut: text/xml
Lungimea conținutului: 9218
Așteptați: 100-continuați
[9218 octeți de date XML]
Acest lucru se face pe câteva gazde sursă S1...Sn și este postat pe câteva gazde țintă T1...Tn. Acum o săptămână, gazda S1 a fost actualizată de la Debian/buster la Debian/bullseye; software-ul PHP generator a fost, de asemenea, actualizat, dar nu sunt conștient de nicio modificare în acest domeniu (și solicitările generate arată identice). Exact din moment ce acest upgrade, două gazde țintă (nerelative) T1 și T2 refuză cererile noastre cu codul de răspuns 400. Toate celelalte gazde țintă funcționează bine, iar T1/T2 funcționează bine, dacă sunt conectate de la alte gazde sursă (cu nivel de revizuire vechi).
Corolar: Vina este de partea noastră. Dar unde?
Notă laterală: eliminarea antetului Expect nu schimbă nimic.
Informații suplimentare: în timp ce T1 răspunde numai cu codul de răspuns 400, T2 este politicos și include un mesaj de stare precum:
[our.ip.address]:60760 are o solicitare incompletă: lungimea estimată a fost de 3994 de octeți, a primit 3899 de octeți
Din păcate, acest indiciu nu este suficient pentru a mă lumina (și nici contactele de acolo nu au suficiente cunoștințe pentru a face asta), dar m-a condus la următoarele
Soluție: dacă suprim antetul Content-Length, transmisia funcționează
Acest lucru este mai bine decât nimic, dar nu satisfăcător - vreau ca problema să fie rezolvată; așa că am verificat de două ori și de trei ori numărul din antetul Content-Length (deoarece aceasta este singura sursă posibilă a erorii la care mă pot gândi până acum); pare ok, si exact acelasi calcul este folosit pe gazdele S2...Sn care inca functioneaza. Și: lungimea conținutului plus antetul estimat (acest lucru va diferi, desigur, un pic din cauza altei gazdă, autorizare și referer) nu este nici lungimea estimată, nici lungimea primită, ci undeva la mijloc. Răspunsurile de până acum au furnizat următoarele numere:
Estimată |
Primit |
Diferență |
4322 |
4228 |
94 |
3972 |
3877 |
95 |
3994 |
3899 |
95 |
6928 |
6768 |
160 |
Din păcate, acest lucru nu este nici constant și nici nu sună niciun clopoțel.
Am setat câteva etichete pentru că Apache (2.4.52), OpenSSL (1.1.1k), curl (7.74.0) și PHP
(7.4.25) au fost actualizate împreună cu serverul, chiar dacă nu văd nicio influență posibilă. Dar nu am alte idei, așa că nu vreau să exclud asta.
Orice idei sunt binevenite.