HTTP POST có thể là vô hạn không?


Câu trả lời:


75

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.


ủng hộ vì đã đề cập đến Metabase.XML và tôi đã liệt kê nhiều cách khác nhau để thay đổi giới hạn kích thước tệp tải lên vì nó có thể hữu ích.
Durai Amuthan.H

Nhập lệnh sau trong dấu nhắc lệnh giúp tăng giới hạn kích thước tải lên của tệp. "Cscript C: \ inetpub \ Adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (tính bằng byte). Tham chiếu: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H

hoặc tìm metabase.xml trong C: \ windows \ sytem32 \ inetserv \ path và chỉnh sửa nhưng hãy đảm bảo Bật chỉnh sửa siêu dữ liệu trực tiếp được bật. tham khảo
Durai Amuthan.H

hoặc Trong web.config của bạn, hãy thêm một dòng dưới system.web của bạn <httpRuntime executeTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H

Đối với các máy chủ web hiện tại (2019), hãy xem câu trả lời này .
Dan Dascalescu

76

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,

  • Giao thức HTTP không chỉ định giới hạn.
  • Phương thức POST cho phép gửi nhiều dữ liệu hơn so với phương thức GET, bị giới hạn bởi độ dài URL - khoảng 2KB.
  • Kích thước nội dung yêu cầu POST tối đa được định cấu hình trên máy chủ HTTP và thường nằm trong khoảng từ
    1MB đến 2GB
  • Máy khách HTTP (trình duyệt hoặc tác nhân người dùng khác) có thể có những hạn chế riêng. Do đó, kích thước yêu cầu nội dung POST tối đa là 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:


4
Trong số những câu trả lời đề cập đến một máy chủ web, hai đề cập đến IIS và một đề cập đến Apache. Dù sao, tôi đã chỉnh sửa câu trả lời của tôi để biển chỉ dẫn về phía bạn hoàn thiện hơn và cập nhật.
David Neale

3
Xin cảm ơn @DavidNeale! Nên có một huy hiệu cho điều đó :) Tôi sẽ cố gắng cập nhật câu trả lời này. Vừa thêm tối đa cho nginx.
Dan Dascalescu

Về điều này: "nhiều dữ liệu hơn phương thức GET, bị giới hạn bởi độ dài URL - khoảng 2KB." Điều gì về tiêu đề? Mỗi bài đăng này có vẻ như tiêu đề cho phép khoảng 8-16KB.
Hans Vonn

27

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 đó.


4GB vẫn là mức tối đa cho Apache? Tôi thấy nó được ghi lại là 2GB.
Dan Dascalescu

@DanDascalescu: Tôi không biết, tôi không làm điều này trong một thời gian dài. Có lẽ họ bắt đầu áp đặt giới hạn trên cho LimitRequestBodychỉ thị.
Greg Hewgill

6

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.


2
Có bất kỳ quy tắc chung nào về mức độ nguy hiểm đối với thời gian chờ và những điều tương tự không?
vextorspace

3

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!


1
Chỉnh sửa tốt @Matt - cho thấy tầm quan trọng của việc cắt ra các sự kiện nổi bật hơn là liên kết một cách mù quáng
amelvin

1

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.


0

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.

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.