có kích thước tối đa bằng độ dài của đầu vào ẩn trong html không?


92

nói cách khác:

<input type="hidden" value="Can I put as much as I want in here, or is there a limit?" />

Và nếu như vậy, nó là gì?


6
Phương pháp hỏi tốt nhất mà tôi từng thấy.
Andrés Morales

Câu trả lời:


59

Nó phụ thuộc vào phương thức bạn gửi biểu mẫu.

Với GET, giới hạn thường được thống nhất là khoảng 1-2 kilobyte, tùy thuộc vào giới hạn của trình duyệt và máy chủ.

Với POST, không có giới hạn kỹ thuật nào trong trình duyệt, nhưng thường là giới hạn kỹ thuật ở phía máy chủ - xem ví dụ: Apache's LimitRequestBody, PHP's post_max_size, v.v.


Hãy cẩn thận với các vấn đề được @naugtur chỉ ra bên dưới đối với các trường nhập văn bản - ít nhất là đối với các trường có giới hạn kỹ thuật do các trình duyệt khác nhau áp đặt.
Oliver,

Tôi vừa chạy một số thử nghiệm trên 3 trình duyệt hiện tại (IE9, FF 10 ESR, Chrome 24) và tất cả chúng đều gửi giá trị đầu vào ẩn là 100KB mà không gặp vấn đề gì. Vì vậy, các vấn đề với đầu vào văn bản dường như không áp dụng ở đây.
Oliver,

còn textareas?
Francisco Corrales Morales

@FranciscoCorralesMorales nó không có vấn đề gì gõ lĩnh vực đầu vào là - những gì đếm là kết quả cuối cùng, tổng của tất cả các dữ liệu bạn đang gửi
Pekka

Tôi thấy rằng Safari đã cắt bớt đầu vào ẩn. Sử dụng một vùng văn bản đã giải quyết được vấn đề.
Brendon Muir

29

Cảnh báo! Tôi đã gặp sự cố <input type="text">khi văn bản dài hơn 65535 (kích thước int đã ký tối đa)

Dán văn bản dường như gây ra một số nội dung tràn kỳ lạ. Phát hiện trong webkit.

[biên tập]

Kích thước của yêu cầu GET không bị giới hạn chính xác như cách Pekka đã viết. Có giới hạn 2083 byte cho toàn bộ chuỗi truy vấn GET chỉ address?paramstrong Internet Explorer Trong các trình duyệt khác, thực tế không có giới hạn nào, ví dụ như FireFox gửi các truy vấn GET trên 100KB. Rõ ràng là máy chủ phải cho phép những điều đó.

Nó không được đề cập trong tài liệu, vì vậy người ta phải kiểm tra nó để biết giới hạn cho các trình duyệt khác. IE: http://support.microsoft.com/kb/208427


8
+1 Tôi đã tạo jsFiddle này để kiểm tra điều gì sẽ xảy ra khi bạn đặt giá trị đầu vào thành một chuỗi rất dài: jsfiddle.net/3TVPL/6 Tôi đã sử dụng một chuỗi dài 65537 ký tự. Trong thử nghiệm của tôi, Crome 24.0.1312 và Safari 5.1.7 dành cho Windows đều hiển thị các hộp đầu vào trống sau khi đặt giá trị cho chuỗi đó. Chrome hiển thị giá trị không trống thích hợp nếu tôi giảm chuỗi dài 65536 ký tự. Các trình duyệt khác (Firefox 17, IE8, IE9, IE10, Opera 12.12) không có bất kỳ vấn đề ngay cả với chuỗi lâu hơn nữa (tôi đã đi lên như xa như khoảng 1,2 Mb string)
Beluga

@beluga tuyệt vời. bất kỳ suy nghĩ về hiệu suất? Trên chiếc máy yếu ớt của tôi đã phải chờ đợi rất lâu. Tôi đoán đó là lý do tại sao webkit không hiển thị điều đó.
naugtur

Điểm tốt, có thể. Tôi đã không thực hiện bất kỳ kiểm tra hiệu suất nào vào lúc này. Tôi có một chiếc máy khá ổn định tại nơi làm việc và không nhận thấy bất kỳ sự chậm trễ nào trong bất kỳ trình duyệt nào.
beluga

Nó làm cho FF của tôi không sử dụng được trong khoảng 5 phút. Đưa nhiều này trong một trường mẫu không phải là một ý tưởng tốt anyway :)
naugtur

Trình duyệt di động và proxy cũng có thể cắt bớt các trường ẩn
George Filippakos 14/02
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.