Đây là một câu hỏi hấp dẫn. Các câu trả lời khác ở đây đều là suy đoán, và trong một số trường hợp không rõ ràng. Thay vì viết ý kiến của tôi ở đây, tôi thực sự đã thực hiện một số nghiên cứu và tìm thấy các nguồn gốc thảo luận về lý do tại sao xóa và đặt không phải là một phần của tiêu chuẩn biểu mẫu HTML5.
Hóa ra, các phương thức này đã được bao gồm trong một số bản nháp HTML5 ban đầu (!), Nhưng sau đó đã bị xóa trong các bản nháp tiếp theo . Mozilla cũng đã thực sự thực hiện điều này trong bản beta Firefox .
Lý do để loại bỏ các phương pháp này khỏi dự thảo là gì? W3C đã thảo luận về chủ đề này trong báo cáo lỗi 10671 . Mike Amundsen lập luận ủng hộ sự hỗ trợ này:
Việc thực thi PUT và DELETE để sửa đổi tài nguyên trên máy chủ gốc là điều dễ dàng đối với các trình duyệt Web hiện đại sử dụng đối tượng XmlHttpRequest. Đối với các tương tác trình duyệt chưa được viết, điều này không đơn giản. [...]
Mẫu này được yêu cầu thường xuyên đến mức một số thư viện / khung Web thường được sử dụng đã tạo ra một công việc "tích hợp". [...]
Những ý kiến khác:
- Sử dụng POST như một đường hầm thay vì sử dụng PUT / DELETE có thể dẫn đến bộ nhớ đệm mis-matches (ví dụ phản ứng POST là cachable , PUT phản ứng không (6), DELETE phản ứng không (7))
- Sử dụng phương pháp không tạm thời (POST) để thực hiện thao tác idempotent (PUT / DELETE) làm phức tạp quá trình phục hồi do lỗi mạng (ví dụ: "Có an toàn để lặp lại hành động này không?").
- [...]
Thật đáng để đọc toàn bộ bài viết của anh ấy.
Tom Wardrop cũng đưa ra một điểm thú vị:
HTML gắn bó chặt chẽ với HTTP. HTML là giao diện con người của HTTP. Do đó, nó tự động đặt câu hỏi tại sao HTML không hỗ trợ tất cả các phương thức có liên quan trong đặc tả HTTP. Tại sao máy móc có thể PUT và XÓA tài nguyên, nhưng con người không thể? [...]
Điều mâu thuẫn là mặc dù HTML có độ dài lớn để đảm bảo đánh dấu ngữ nghĩa, nhưng đến nay, không có nỗ lực nào để đảm bảo các yêu cầu HTTP ngữ nghĩa.
Lỗi cuối cùng đã được đóng lại khi W Do Fix của Ian Hickson sửa chữa , với lý do sau:
PUT như một phương thức biểu mẫu không có ý nghĩa, bạn sẽ không muốn PUT một tải trọng biểu mẫu. XÓA chỉ có ý nghĩa nếu không có tải trọng, vì vậy nó cũng không có ý nghĩa nhiều với các biểu mẫu.
Tuy nhiên, đó không phải là kết thúc của câu chuyện! Sự cố đã được đóng trong trình theo dõi lỗi W3C và chuyển sang trình theo dõi sự cố của Nhóm làm việc HTML:
https://www.w3.org/html/wg/tracker/issues/195
Tại thời điểm này, dường như lý do chính tại sao không có hỗ trợ cho các phương thức này chỉ đơn giản là không ai dành thời gian để viết một đặc tả toàn diện cho nó.