Ricevo uno stato 411 da nginx quando provo a fare un PUT senza specificare la lunghezza del contenuto. C'è un modo per impedire che ciò accada?
Ricevo uno stato 411 da nginx quando provo a fare un PUT senza specificare la lunghezza del contenuto. C'è un modo per impedire che ciò accada?
Risposte:
Potresti provare ad aggiungere questo alla tua query:
curl -i -X PUT -H 'Lunghezza contenuto: 0' ' http://www.example.com/test '
Prova a installare HttpChunkinModule o aggiorna Nginx a 1.3.9+
Questo modulo non è più necessario per Nginx 1.3.9+ perché a partire dall'1.3.9, il core Nginx ha già il supporto integrato per i corpi di richiesta chunked.
Le richieste PUT richiedono Content-Length. Non è Nginx, è HTTP che rende questo requisito. La richiesta PUT, come le richieste POST, ha necessariamente un corpo di contenuto. Quel corpo può essere di lunghezza zero, ma se lo è allora devi dirlo esplicitamente. Ovviamente non si può presumere che il contenuto continui fino alla chiusura della connessione (che è ciò che implica un'intestazione di lunghezza del contenuto assente), perché il server deve essere in grado di rispondere alla richiesta prima che la connessione venga chiusa.
Vecchia domanda, ma da quando mi sono imbattuto in questo da una ricerca sul web:
NginX 1.3.9 e versioni successive supportano "Transfer-Encoding: chunked" pronto all'uso per POST e PUT.
Con il trasferimento a blocchi, è possibile inviare file senza prima impostare la lunghezza del contenuto.