Câu trả lời ngắn - giới hạn thực tế là 2000 ký tự
Nếu bạn giữ URL dưới 2000 ký tự, chúng sẽ hoạt động trong hầu hết mọi phần mềm máy khách và máy chủ.
Nếu bạn đang nhắm mục tiêu các trình duyệt cụ thể, xem bên dưới để biết thêm chi tiết giới hạn cụ thể.
Câu trả lời dài hơn - đầu tiên, các tiêu chuẩn ...
RFC 2616 (Giao thức truyền siêu văn bản HTTP / 1.1) phần 3.2.1 cho biết
Giao thức HTTP không đặt bất kỳ giới hạn tiên nghiệm nào về độ dài của URI. Máy chủ PHẢI có thể xử lý URI của bất kỳ tài nguyên nào chúng phục vụ và NÊN có thể xử lý các URI có độ dài không giới hạn nếu chúng cung cấp các biểu mẫu dựa trên GET có thể tạo ra các URI đó. Máy chủ NÊN trả về trạng thái 414 (URI yêu cầu quá dài) nếu URI dài hơn máy chủ có thể xử lý (xem phần 10.4.15).
RFC đó đã bị RFC7230 lỗi thời , đây là một bản làm mới của đặc tả HTTP / 1.1. Nó chứa ngôn ngữ tương tự, nhưng cũng tiếp tục gợi ý điều này:
Nhiều hạn chế ad hoc khác nhau về độ dài dòng yêu cầu được tìm thấy trong thực tế. Điều được khuyến nghị là tất cả người gửi và người nhận HTTP đều hỗ trợ, ở mức tối thiểu, độ dài dòng yêu cầu là 8000 octet.
... và thực tế
Đó là những gì các tiêu chuẩn nói. Trong thực tế , có một bài viết trên boutell.com (liên kết đến bản sao lưu Lưu trữ Internet) đã thảo luận về những gì trình duyệt cá nhân và trình duyệt sẽ hỗ trợ. Tóm tắt điều hành là:
Các URL cực dài thường là một sai lầm. Các URL trên 2.000 ký tự sẽ không hoạt động trong các trình duyệt web phổ biến nhất. Không sử dụng chúng nếu bạn dự định trang web của bạn sẽ hoạt động cho phần lớn người dùng Internet.
(Lưu ý: đây là một trích dẫn từ một bài báo viết bằng 2006 , nhưng vào năm 2015 giảm phương tiện sử dụng IE rằng URL còn làm việc cho phần lớn Tuy nhiên, IE vẫn có giới hạn ....)
Những hạn chế của Internet Explorer ...
Độ dài URL tối đa của IE8 là 2083 ký tự và có vẻ như IE9 có giới hạn tương tự .
Tôi đã thử IE10 và thanh địa chỉ sẽ chỉ chấp nhận 2083 ký tự. Bạn có thể nhấp vào một URL dài hơn URL này, nhưng thanh địa chỉ sẽ vẫn chỉ hiển thị 2083 ký tự của liên kết này.
Có một bài viết hay trên blog IE Internals đi sâu vào một số nền tảng của vấn đề này.
Có các báo cáo hỗn hợp IE11 hỗ trợ URLS dài hơn - xem bình luận bên dưới. Cho một số người báo cáo vấn đề, lời khuyên chung vẫn còn.
Các công cụ tìm kiếm như URL <2048 ký tự ...
Xin lưu ý rằng giao thức sơ đồ trang web , cho phép một trang web thông báo cho các công cụ tìm kiếm về các trang có sẵn, có giới hạn 2048 ký tự trong một URL. Nếu bạn có ý định sử dụng sơ đồ trang web, một giới hạn đã được quyết định cho bạn! (xem câu trả lời của Calin-Andrei Burloiu bên dưới)
Cũng có một số nghiên cứu từ năm 2010 về độ dài URL tối đa mà các công cụ tìm kiếm sẽ thu thập dữ liệu và lập chỉ mục . Họ tìm thấy giới hạn là 2047 ký tự, xuất hiện liên minh với thông số giao thức sơ đồ trang web. Tuy nhiên, họ cũng tìm thấy công cụ Google SERP sẽ không đối phó với các URL dài hơn 1855 ký tự.
CDN có giới hạn
CDN cũng áp đặt các giới hạn về độ dài URI và sẽ trả về 414 Too long request
khi đạt đến các giới hạn này, ví dụ:
(ghi có vào timrs2998 để cung cấp thông tin đó trong các bình luận)
Bổ sung trình duyệt
Tôi đã thử nghiệm các điều sau với máy chủ Apache 2.4 được cấu hình với LimitRequestLine và LimitRequestFieldSize rất lớn .
Browser Address bar document.location
or anchor tag
------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
IE11 2047 5120
Edge 16 2047 10240
Xem thêm câu trả lời này từ Matas Vaitkevicius dưới đây.
Thông tin này có được cập nhật không?
Đây là một câu hỏi phổ biến và vì nghiên cứu ban đầu là ~ 12 tuổi, tôi sẽ cố gắng cập nhật nó: Kể từ tháng 1 năm 2020 , lời khuyên vẫn còn tồn tại. Mặc dù IE11 có thể chấp nhận các URL dài hơn, nhưng tính phổ biến của các cài đặt IE cũ hơn cộng với các giới hạn của công cụ tìm kiếm có nghĩa là ở dưới 2000 ký tự là chính sách chung tốt nhất.