Esiste un modo per evitare gli errori richiesti dalla lunghezza del contenuto di nginx 411?


11

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?

nginx 

Risposte:


10

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.


5

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.


3
questo non è corretto. w3.org/Protocols/rfc2616/rfc2616-sec4.html "La presenza di un corpo del messaggio in una richiesta è segnalata dall'inclusione di un campo di intestazione Content-Length o Transfer-Encoding nelle intestazioni dei messaggi della richiesta." Questo è un bug in nginx che è stato corretto nelle versioni più recenti. Si noti che questo bug è stato corretto per POST molto prima di PUT.
Nick Palmer,

2

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.


Sì, l'ho risolto, grazie!
rogerdpack
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.