Tôi đang gặp khó khăn khi tìm một đặc điểm kỹ thuật xác định trong tiêu chuẩn này. Tôi có một máy khách HTTP không bao gồm tiêu đề 'Content-Length: 0' khi thực hiện yêu cầu PUT nơi tôi không chỉ định một cơ thể và máy chủ bị nhầm lẫn bởi các yêu cầu như vậy, và tôi tự hỏi chương trình nào tôi nên đổ lỗi.Yêu cầu HTTP PUT có cần bao gồm nội dung không?
Trả lời
Yêu cầu HTTP có nội dung nếu chúng có tiêu đề Nội dung dài hoặc Chuyển mã hóa (RFC 2616 4.3). Nếu yêu cầu không có, nó không có cơ thể, và máy chủ của bạn nên xử lý nó như vậy.
Điều đó nói rằng không bình thường khi yêu cầu PUT không có cơ thể, và vì vậy nếu tôi thiết kế một khách hàng thực sự muốn gửi một cơ thể trống, tôi sẽ chuyển Content-Length: 0. Thật vậy, tùy thuộc vào đọc các định nghĩa phương thức POST và PUT (RFC 2616 9.5, 9.6) người ta có thể cho rằng cơ thể được ngụ ý là bắt buộc - nhưng cách hợp lý để xử lý không có cơ thể nào là giả định một thân dài bằng không.
Trường chiều dài nội dung được yêu cầu như mỗi phần sau trong HTTP/tiêu chuẩn 1.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
gì đang được PUT (theo nghĩa động từ) vào máy chủ nếu không có nội dung? Các spec đề cập đến nội dung là "thực thể kèm theo", nhưng một yêu cầu không có nội dung sẽ không có thực thể kèm theo, và do đó không có gì để đưa vào máy chủ.
Trừ khi, tất nhiên, bạn muốn PUT không có gì trên máy chủ, trong trường hợp đó, bạn có thể muốn một DELETE thay thế.
Không trả lời các câu hỏi, nhưng khẳng định như thế nào jaxrs cho phép tôi sử dụng thường xuyên đặt bodyless:
Ví dụ về đặt bodyless: Cho người dùng một phép bổ sung.
PUT/admin/người dùng/{username}/phép/{} phép
Chính xác tôi vấn đề! Tôi đến cùng một kết luận. Nhưng nghiêm túc nói, điều này đi ngược lại RFC, ở đâu, mặc dù không được đề cập một cách rõ ràng, cơ thể được gọi là hiện tại. Nó có thể gây ra vấn đề, nhưng theo kinh nghiệm của tôi, tất cả các máy chủ/khung công tác web hiện đại sẽ hoạt động. –
Một cơ thể không được yêu cầu của tiêu chuẩn IETF, mặc dù nội dung có độ dài phải là 0 nếu không có cơ thể. Sử dụng phương pháp phù hợp với những gì bạn đang làm. Nếu bạn đặt mã này vào mã, hãy cho
int x;
int f(){ return x; }
và biến từ xa có tên r
.
Một bài tương đương với
r=f();
Một đặt tương đương với
r=x;
và get tương đương với
x=r;
Đây là ví dụ rõ ràng nhất về PUT so với POST mà tôi từng đọc, mặc dù nằm ngoài chủ đề –
- 1. Bao gồm Id trong URI cho các yêu cầu PUT
- 2. Yêu cầu PUT HTTP với Node.js
- 3. Cách gửi yêu cầu HTTP POST bằng nội dung gzip?
- 4. URL yêu cầu HTTP có phải là một phần của tiêu đề yêu cầu HTTP không?
- 5. Cách đăng nội dung bằng Yêu cầu HTTP (Perl)
- 6. Giá trị loại nội dung trong yêu cầu HTTP khi tải lên nội dung?
- 7. Nhận phản hồi của yêu cầu http mà không có độ dài nội dung?
- 8. Bật các yêu cầu Http PUT trên .NET MVC
- 9. Cách thực hiện yêu cầu HTTP PUT bằng LWP?
- 10. Cách nhận nội dung yêu cầu (nội dung) trong PHP?
- 11. Có phải loại nội dung bắt buộc trong yêu cầu đăng HTTP không?
- 12. Trả lời yêu cầu HTTP POST không cần thiết
- 13. Nhận "Yêu cầu chiều dài 411" sau yêu cầu PUT từ Máy khách HTTP
- 14. bao gồm, include_once, yêu cầu hoặc require_once?
- 15. Tải trọng yêu cầu HTTP
- 16. HTTP POST: yêu cầu tiêu đề có độ dài nội dung?
- 17. Elmah: Cách lấy nội dung yêu cầu JSON HTTP từ báo cáo lỗi
- 18. Gửi yêu cầu Nội dung trên tài nguyên $
- 19. Tôi có cần bao gồm @synthesize không?
- 20. yêu cầu tệp nội dung từ thư mục con của đường dẫn nội dung
- 21. Symfony2: gửi yêu cầu HTTP
- 22. HttpRequest PUT nội dung trong thư viện poco
- 23. Yêu cầu POST và PUT AFNetworking
- 24. Cách nhận nội dung bao gồm dưới dạng chuỗi?
- 25. PHP nhận cơ chế yêu cầu PUT
- 26. BOOST ASIO POST HTTP YÊU CẦU - tiêu đề và nội dung
- 27. Cách viết Yêu cầu HTTP
- 28. PHP yêu cầu/bao gồm thực hành mã hóa
- 29. Dịch vụ REST REST không nhận ra yêu cầu PUT
- 30. cách bao gồm mã HTML trong nội dung thư Mailx
Đó là một NÊN không một PHẢI – bdonlan