Reintentos de autenticación do proxy e corpos de carga non repetibles
Comprenda por que os reintentos de autenticación poden expor un fluxo de carga dun só uso, e escolla deliberadamente unha memoria intermedia limitada ou contido repetible.
Unha solicitude GET pode autenticarse a través dun proxy mentres que un POST ou PUT falla cun erro de corpo non repetible ou de rebobinado. A conta pode ser correcta: un intercambio de autenticación pode requirir outra solicitude despois de que o cliente xa consumise a carga.
| Orixe do corpo | Opción de repetición |
|---|---|
| Corpo pequeno e finito | Unha memoria intermedia limitada pode conservar os seus bytes. |
| Ficheiro con busca | A interface de rebobinado compatible co cliente pode facelo repetible. |
| Xerador, tubo ou produtor en vivo | Unha fonte dun só uso pode requirir outro deseño. |
libcurl documenta devolucións de chamada de busca para usos como a autenticación en varias pasadas. Jersey ofrece modos de procesamento de entidades con búfer e fragmentados suxeitos ao comportamento do conector. Un exemplo de conector Jersey 2 Apache mostra a configuración con búfer. Ningún dos dous fai apropiadas as cargas ilimitadas en memoria.
Reproduza o método e a orixe do corpo que fallan. Un GET preparatorio non ten ningunha carga que repetir e non demostra que unha carga posterior comparta a súa conexión ou o seu estado de autenticación. Un destino, obxecto de cliente ou política de conexión novos poden cambialo. Un corpo baseado en ficheiro e un fluxo en vivo tamén difiren aínda que o seu texto de mostra sexa o mesmo.
Se usa búfer, defina o seu límite de tamaño, localización de almacenamento e vida útil. As cargas simultáneas multiplican o custo, e os datos sensibles permanecen onde se garde o búfer.
Autenticación previa a un proxy compatible coñecido pode evitar un desafío inicial. Non pode excluír cada rolda de autenticación, redirección ou conexión pechada posterior que poida esixir outro intento.
Manteña xuntos a resposta do proxy, o punto de consumo do corpo e o erro de repetición. Despois distinga a repetición do protocolo dun resultado de aplicación incerto: un envío pode terse procesado antes de que se perdese a súa resposta. Siga as regras de idempotencia do destino antes de envialo de novo.