Content Length e Transfer Encoding Chunked nginx, node-http-proxy

6

Eu tenho a seguinte configuração - O node-http-proxy age como um proxy reverso encaminhando todos os pedidos para o nginx / socket.io conforme necessário

Meu problema é esse Quando envio uma solicitação HTTP DELETE do navegador, o node-http-proxy adiciona um cabeçalho "Transfer Encoding Chunked", pois a solicitação do navegador não tinha Content Length. A solicitação do navegador não tinha Content Length, pois não tinha corpo. O Nginx não gosta do cabeçalho Transfer Encoding Chunked e lança um 411 pedindo Content-Length.

O problema é resolvido quando envio dados fictícios como parte da solicitação DELETE, então há um Content Length e o node-http-proxy não adiciona o cabeçalho Transfer Encoding Chunked e o nginx está satisfeito.

Eu quero entender se o node-http-proxy não está funcionando como esperado, porque ele adiciona um cabeçalho Transfer Encoding Chunked quando o comprimento do conteúdo está ausente porque não há um corpo de conteúdo.

EDIT - Mais informações:

Quando eu tentei remover o node-http-proxy e enviar diretamente o pedido para o nginx, o nginx está satisfeito com isso. Por favor note, nem Content Length (como o corpo é vazio) nem Transfer Encoding Chunked é definido pelo navegador

    
por rampr 06.06.2012 / 12:26

2 respostas

3

De RFC 2616 - "A presença de um corpo de mensagem em uma solicitação é sinalizada pela inclusão de um campo de cabeçalho Content-Length ou Transfer-Encoding nos cabeçalhos de mensagem da solicitação.". Então, eu acho que o nginx está certo em esperar um Content-Length, pois ele acha que tem um corpo de mensagem.

Você pode tentar explicitamente configurar Content-Length como 0.
Experimente também: link

    
por 06.06.2012 / 20:14
2

Eu experimentei exatamente o mesmo problema na minha configuração. Detalhes podem ser encontrados aqui: link

Acabei com o patch de http-proxy para adicionar o tamanho do conteúdo para solicitações de DELETE. Você pode encontrar patch no meu fork do http-proxy aqui:

link

    
por 22.11.2012 / 14:37