Estou recebendo um status 411 de volta do nginx ao tentar fazer um PUT sem especificar o comprimento do conteúdo. Existe alguma maneira de impedir que isso aconteça?
Estou recebendo um status 411 de volta do nginx ao tentar fazer um PUT sem especificar o comprimento do conteúdo. Existe alguma maneira de impedir que isso aconteça?
Respostas:
Você pode tentar adicionar isso à sua consulta:
curl -i -X PUT -H 'Comprimento do conteúdo: 0' ' http://www.example.com/test '
Tente instalar o HttpChunkinModule ou atualize o Nginx para 1.3.9+
Este módulo não é mais necessário para o Nginx 1.3.9+ porque, desde 1.3.9, o núcleo do Nginx já possui suporte interno para os corpos de solicitação em pedaços.
As solicitações PUT exigem o comprimento do conteúdo. Não é o Nginx, é o HTTP que está fazendo esse requisito. Solicitações PUT, como solicitações POST, necessariamente têm um corpo de conteúdo. Esse corpo pode ter comprimento zero, mas, se for, é preciso dizer explicitamente. Obviamente, você não pode presumir que o conteúdo continue até que a conexão seja fechada (o que implica um cabeçalho de conteúdo ausente), porque o servidor precisa responder à solicitação antes que a conexão seja fechada.
Pergunta antiga, mas desde que me deparei com isso em uma pesquisa na web:
O NginX 1.3.9 e superior suporta "Transfer-Encoding: chunked" pronto para o POST e PUT.
Com a transferência em partes, você pode enviar arquivos sem definir primeiro o tamanho do conteúdo.