nginx 411 Content-Length 필수 오류를 피하는 방법이 있습니까? PUT을 수행하려고 할

콘텐츠 길이를 지정하지 않고 PUT을 수행하려고 할 때 nginx에서 411 상태를 다시 얻습니다. 이것을 막을 방법이 있습니까?



답변

이것을 쿼리에 추가하려고 시도 할 수 있습니다.

curl -i -X ​​PUT -H ‘콘텐츠 길이 : 0’http://www.example.com/test

HttpChunkinModule 을 설치 하거나 Nginx를 1.3.9 이상으로 업데이트 하십시오

이 모듈은 Nginx 1.3.9 이상에 더 이상 필요하지 않습니다. 왜냐하면 1.3.9부터 Nginx 코어는 이미 청크 된 요청 본문을 기본적으로 지원하기 때문입니다.


답변

PUT 요청에는 Content-Length가 필요합니다. Nginx가 아니라 HTTP 가이 요구 사항을 만듭니다. POST 요청과 마찬가지로 PUT 요청에는 반드시 내용 본문이 있습니다. 그 몸은 길이가 0이 될 수 있지만, 그렇다면 몸을 분명히 말해야합니다. 분명히 연결이 닫히기 전에 서버가 요청에 응답 할 수 있어야하기 때문에 연결이 닫힐 때까지 내용이 계속된다고 가정 할 수는 없습니다 (콘텐츠 길이 헤더가없는 것임).


답변

오래된 질문이지만 웹 검색 에서이 문제가 발생했기 때문에 :

NginX 1.3.9 이상은 POST 및 PUT에 대해 “전송 인코딩 : 청크 분할”을 지원합니다.

청크 전송을 사용하면 내용 길이를 먼저 설정하지 않고 파일을 보낼 수 있습니다.


답변