Upprepade proxyautentiseringar och icke-upprepningsbara uppladdningskroppar
Förstå varför upprepade autentiseringsförsök kan avslöja en engångsuppladdningsström, och välj medvetet begränsad buffring eller upprepningsbart innehåll.
En GET kan autentisera via en proxy medan en POST eller PUT misslyckas med ett fel om icke-upprepningsbar kropp eller bakåtspolning. Kontot kan vara korrekt: ett autentiseringsutbyte kan kräva ännu en begäran efter att klienten redan förbrukat uppladdningen.
| Kroppskälla | Val av upprepning |
|---|---|
| Liten ändlig kropp | En begränsad buffert kan behålla dess byte. |
| Sökbar fil | Klientens stödda bakåtspolningsgränssnitt kan göra den upprepningsbar. |
| Generator, rör eller liveproducent | En engångskälla kan kräva en annan utformning. |
libcurl dokumenterar seek-callbacks för användningar, inklusive autentisering i flera pass. Jersey erbjuder buffrade och uppdelade entitetsbearbetningslägen beroende på kontaktdonets beteende. Ett exempel på Jersey 2 Apache-kontaktdon visar den buffrade inställningen. Ingen av dem gör obegränsade uppladdningar i minnet lämpliga.
Återskapa metoden och kroppskällan som misslyckas. En förberedande GET har ingen uppladdning att upprepa, och den bevisar inte att en senare uppladdning delar dess anslutning eller autentiseringstillstånd. En ny destination, klientobjekt eller anslutningspolicy kan ändra det. En filbaserad kropp och en live-ström skiljer sig också även när deras exempeltext är densamma.
Om du buffrar, definiera storleksgränsen, lagringsplatsen och livslängden. Samtidiga uppladdningar mångdubblar kostnaden, och känsliga data stannar där bufferten förvaras.
Förautentisering mot en känd kompatibel proxy kan undvika en inledande utmaning. Den kan inte utesluta varje senare autentiseringsomgång, omdirigering eller stängd anslutning som kan kräva ett nytt försök.
Håll proxy-svaret, punkten där kroppen förbrukas och upprepningsfelet tillsammans. Skilj sedan protokollupprepning från ett osäkert applikationsresultat: en inskickning kan ha behandlats innan dess svar gick förlorat. Följ destinationens idempotensregler innan du skickar den igen.