Tôi nghe nói rằng HTTP POST không có giới hạn đặc tả về kích thước dữ liệu mà nó có thể được gửi. Điều đó có đúng không hay chỉ có một số giới hạn thực sự cao?
Câu trả lời:
EDIT (2019) Câu trả lời này hiện khá thừa nhưng có một câu trả lời khác với nhiều thông tin liên quan hơn.
Nó phụ thuộc vào máy chủ web và trình duyệt web:
Internet explorer Tất cả các phiên bản 2GB-1
Mozilla Firefox Tất cả các phiên bản 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1
Mặc dù IIS chỉ hỗ trợ 200KB theo mặc định, siêu dữ liệu cần sửa đổi để tăng điều này.
http://www.motobit.com/help/scptutl/pa98.htm
Bản thân phương thức POST không có bất kỳ giới hạn nào về kích thước dữ liệu.
Khá tuyệt vời khi tất cả các câu trả lời đều nói về IIS, như thể đó là máy chủ web duy nhất quan trọng. Thậm chí vào năm 2010 khi câu hỏi được đặt ra, Apache đã chiếm từ 60% đến 70% thị phần . Dù sao,
min(serverMaximumSize, clientMaximumSize)
.Dưới đây là các kích thước nội dung POST cho một số máy chủ HTTP phổ biến hơn:
Không có giới hạn theo chính giao thức HTTP, nhưng việc triển khai sẽ có giới hạn trên thực tế. Tôi đã gửi dữ liệu vượt quá 4 GB bằng POST tới Apache, nhưng một số máy chủ đã có giới hạn 4 GB vào thời điểm đó.
LimitRequestBody
chỉ thị.
POST cho phép một độ dài dữ liệu tùy ý được gửi đến máy chủ, nhưng có những hạn chế dựa trên thời gian chờ / băng thông, v.v.
Tôi nghĩ về cơ bản, sẽ an toàn hơn nếu cho rằng gửi nhiều dữ liệu là không ổn.
Các máy chủ web IIS khác nhau có thể xử lý lượng dữ liệu khác nhau trong 'tiêu đề', theo bài viết này (hiện đã bị xóa); http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;
Lưu ý rằng không có giới hạn về số lượng phần tử MẪU bạn có thể chuyển qua POST, nhưng chỉ trên kích thước tổng hợp của tất cả các cặp tên / giá trị. Trong khi GET được giới hạn ở mức thấp nhất là 1024 ký tự, dữ liệu POST được giới hạn ở 2 MB trên IIS 4.0 và 128 KB trên IIS 5.0. Mỗi tên / giá trị được giới hạn trong 1024 ký tự, theo quy định của SGML. Tất nhiên, điều này không áp dụng cho các tệp được tải lên bằng enctype = 'Multiart / form-data' ... Tôi không gặp vấn đề gì khi tải lên các tệp có dung lượng 90 - 100 MB bằng IIS 5.0, ngoài việc phải tăng giá trị server.scriptTimeout cũng như sự kiên nhẫn của tôi!
Trong một ứng dụng mà tôi đang phát triển, tôi đã gặp phải thứ dường như giới hạn POST là khoảng 2KB. Hóa ra là tôi đã vô tình mã hóa các tham số vào URL thay vì chuyển chúng vào nội dung. Vì vậy, nếu bạn đang gặp sự cố ở đó, chắc chắn có một giới hạn rất nhỏ về kích thước của dữ liệu POST mà bạn có thể gửi được mã hóa vào URL.
HTTP có thể không có giới hạn trên, nhưng máy chủ web có thể có giới hạn này. Trong ASP.NET có giới hạn chấp nhận mặc định là 4 MB, nhưng bạn (nhà phát triển / quản trị viên web) có thể thay đổi giới hạn đó thành cao hơn hoặc thấp hơn.