Повторни обиди за автентикација преку прокси и тела за прикачување што не можат да се повторат
Разберете зошто повторните обиди за автентикација можат да откријат еднократен тек на прикачување и свесно изберете ограничено баферирање или повторлив содржина.
GET може да се автентицира преку прокси, додека POST или PUT не успева со грешка за непреповторливо тело или премотување. Сметката може да биде точна: размената за автентикација може да бара уште едно барање откако клиентот веќе го потрошил прикачувањето.
| Извор на телото | Избор на повторување |
|---|---|
| Мало конечно тело | Ограничен бафер може да ги задржи неговите бајти. |
| Пребарувачка датотека | Интерфејсот за премотување што клиентот го поддржува може да го направи повторлив. |
| Генератор, цевка или жив производител | Еднократниот извор може да бара друг дизајн. |
libcurl документира повратни повици за пребарување за употреби, вклучително повеќестепена автентикација. Jersey нуди бафериран и поделен режим на обработка на ентитети, зависно од однесувањето на конекторот. Пример за конектор Jersey 2 Apache го прикажува баферираното поставување. Ниту едно од нив не ги прави неограничените прикачувања во меморија соодветни.
Репродуцирајте го методот и изворот на телото што не успеваат. Подготвителниот GET нема прикачување за повторување и не докажува дека подоцнежното прикачување ја дели неговата врска или состојбата на автентикација. Нова дестинација, клиентски објект или политика на врска може да го промени тоа. Телото засновано на датотека и живиот тек исто така се разликуваат дури и кога нивниот примерен текст е ист.
Ако баферирате, дефинирајте ја границата на големината, местото за складирање и векот на траење. Истовремените прикачувања го умножуваат трошокот, а чувствителните податоци остануваат каде и да се чува баферот.
Претходна автентикација на познат компатибилен прокси може да избегне еден почетен предизвик. Сепак, не може да го исклучи секој подоцнежен круг на автентикација, пренасочување или затворена врска што може да бара уште еден обид.
Држете ги заедно одговорот на проксито, точката на потрошувачка на телото и грешката при повторување. Потоа разграничете го повторувањето на протоколот од неизвесен резултат на апликацијата: поднесувањето можеби било обработено пред да се загуби неговиот одговор. Следете ги правилата за идемпотентност на дестинацијата пред повторно да го испратите.