Có cách nào để tránh nginx 411 Lỗi yêu cầu Độ dài nội dung không?


11

Tôi nhận được trạng thái 411 trở lại từ nginx khi cố gắng thực hiện PUT mà không chỉ định độ dài nội dung. Có cách nào để vô hiệu hóa điều này xảy ra?

nginx 

Câu trả lời:


10

Bạn có thể thử thêm điều này vào truy vấn của mình:

curl -i -X ​​PUT -H 'Độ dài nội dung: 0' ' http://www.example.com/test '

Hãy thử cài đặt HttpChunkinModule hoặc cập nhật Nginx lên 1.3.9+

Mô-đun này không còn cần thiết cho Nginx 1.3.9+ vì kể từ 1.3.9, lõi Nginx đã có hỗ trợ tích hợp cho các cơ quan yêu cầu chunk.


5

Yêu cầu PUT yêu cầu Độ dài nội dung. Không phải Nginx, đó là HTTP đang thực hiện yêu cầu này. Yêu cầu PUT, giống như các yêu cầu POST, nhất thiết phải có nội dung. Cơ thể đó có thể có độ dài bằng không, nhưng nếu có thì bạn phải nói rõ ràng như vậy. Rõ ràng bạn không thể cho rằng nội dung tiếp tục cho đến khi kết nối bị đóng (đó là điều mà tiêu đề độ dài nội dung vắng mặt), bởi vì máy chủ phải có thể đáp ứng yêu cầu trước khi kết nối bị đóng.


3
Điều này là không chính xác. w3.org/Prot Protocol / rfc2616 / rfc2616-sec4.html "Sự hiện diện của nội dung thư trong yêu cầu được báo hiệu bằng cách đưa trường tiêu đề Nội dung hoặc Chuyển mã hóa nội dung vào tiêu đề thư của yêu cầu." Đây là một lỗi trong nginx được sửa trong các phiên bản gần đây hơn. Lưu ý rằng lỗi này đã được sửa cho POST từ lâu trước khi PUT.
Nick Palmer

2

Câu hỏi cũ, nhưng vì tôi vấp vào câu hỏi này từ một tìm kiếm trên web:

NginX 1.3.9 trở lên hỗ trợ "Mã hóa chuyển: chunked" ra khỏi hộp cho POST và PUT.

Với chuyển khối, bạn có thể gửi tệp mà không cần đặt độ dài nội dung trước.


Yep đã sửa nó, cảm ơn!
rogerdpack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.