Có giới hạn về độ dài của yêu cầu GET không?Có giới hạn về độ dài của yêu cầu GET không?
Trả lời
Không có trong số RFC, không, nhưng có giới hạn thực tế.
Giao thức HTTP không đặt bất kỳ giới hạn ưu tiên nào về độ dài một URI. Máy chủ PHẢI có thể xử lý URI của bất kỳ tài nguyên nào mà họ 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 các URI như vậy. Máy chủ NÊN trả lại trạng thái 414 (Yêu cầu-URI quá dài) nếu URI dài hơn so với máy chủ có thể xử lý (xem phần 10.4.15).
Lưu ý: Máy chủ nên thận trọng về tùy thuộc vào độ dài URI trên 255 byte, bởi vì một số khách hàng hoặc proxy triển khai cũ thể không hỗ trợ đúng những độ dài.
HTTPbis thêm một chút vào điều này: "Các giới hạn đặc biệt khác nhau về độ dài mục tiêu yêu cầu được tìm thấy trong thực tế. NHẬN ĐƯỢC rằng tất cả người gửi và người nhận HTTP hỗ trợ độ dài mục tiêu yêu cầu là 8000 hoặc nhiều octet." http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-17#section-3.1.1.2 –
This article tiền nó lên khá tốt
Tóm tắt: Đó là thực hiện phụ thuộc, như không có giới hạn quy định trong RFC. Sẽ an toàn khi sử dụng tới 2000 ký tự (giới hạn của IE.) Nếu bạn ở bất cứ nơi nào gần độ dài này, bạn nên chắc chắn rằng bạn thực sự cần URI dài, có thể một thiết kế thay thế có thể xoay quanh điều đó.
URI phải có thể đọc được, ngay cả khi được sử dụng để gửi dữ liệu.
Khả năng ghi tốt, nhưng khả năng đọc URI không liên quan gì đến GET và POST. Mục đích là để xác định một API RESTful cho web phân biệt giữa các khác biệt chức năng của các kiểu yêu cầu. Các yêu cầu HTTP GET có thể có xu hướng là người dùng có thể đọc được đối với các siêu liên kết, nhưng đó không phải là mục đích của chúng, chỉ là một lần sử dụng. http: //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html # sec9.3 – DougW
Mục đích của URI không phải là để xác định một API RESTful cho web. Ở tất cả. http://www.w3.org/Provider/Style/URI.html –
Đúng. Tuy nhiên, mục đích của GET & POST là. Câu hỏi đặt ra là hỏi về các yêu cầu HTTP GET. Bạn đang giả định anh ta có nghĩa là siêu liên kết được tìm thấy trên một trang web, dành cho khả năng đọc của con người. Đó là một cách sử dụng đặc biệt của GET HTTP, nhưng cách xa duy nhất. – DougW
Đặc điểm kỹ thuật không giới hạn độ dài của yêu cầu Nhận HTTP nhưng các trình duyệt khác nhau thực hiện các giới hạn riêng của chúng. Ví dụ: Internet Explorer có giới hạn được thực hiện ở 2083 ký tự.
Cảm ơn giá trị chính xác của bạn => +1. Tuy nhiên phiên bản IE cụ thể là gì? IE8 của tôi không chấp nhận hơn 2048 ký tự trên thanh địa chỉ (hộp nhập URL). Nhưng mã JavaScript của tôi có thể gửi XMLHttpRequest GET sử dụng 3586 ký tự (tôi không kiểm tra thêm). Vì vậy, bạn đã tìm thấy năm 2083 ở đâu? Chúc mừng. – olibre
Tôi đã thực hiện một số thử nghiệm khác với IE8, IE9, FF14, Opera11, Chrome20 và Tomcat 6.0.32 (cài đặt mới), Jersey 1.13 ở phía máy chủ. Tôi đã sử dụng hàm jQuery $ .getJson và JSONP. Kết quả: Tất cả các trình duyệt cho phép lên đến khoảng 5400 ký tự. FF và IE9 đã lên đến khoảng 6200 ký tự. Mọi thứ ở trên đều trả về "400 yêu cầu không hợp lệ". Tôi không tiếp tục điều tra những gì có trách nhiệm cho 400. Tôi đã tốt với tối đa tôi tìm thấy, bởi vì tôi cần khoảng 2000 ký tự trong trường hợp của tôi. – OneWorld
Bài viết MS KB này khẳng định giới hạn URL của IE8 (và trước đó) cho URL GET và POST là 2083 ký tự: http://support.microsoft.com/kb/208427 –
W3C dứt khoát chối này như một huyền thoại ở đây
Đó là về một huyền thoại về giới hạn cụ thể là 256 ký tự và có giới hạn khả thi trong IE. –
Liên kết được thay thế bằng http://www.w3.org/2001/tag/doc/whenToUseGet-20030922#ephemeral (có nội dung tương tự) –
@ JonasKölker le € 33 # SDay s – OneWorld
setFixedLengthStreamingMode (int) với các thông số ContentLength có thể thiết lập độ dài cố định của một cơ quan yêu cầu HTTP.
Điều này có vẻ là duy nhất câu trả lời thực sự có liên quan.Những người khác là tất cả về độ dài URL, không xuất hiện trong câu hỏi. – EJP
theo yêu cầu của tài Erickson, tôi Gửi cảm nhận của tôi Như trả lời:
Tôi đã làm một số thử nghiệm nhiều hơn với IE8, IE9, FF14, Opera11, Chrome20 và Tomcat 6.0.32 (cài đặt mới), Jersey 1,13 trên phía máy chủ. Tôi đã sử dụng hàm jQuery $ .getJson và JSONP. Kết quả: Tất cả các trình duyệt cho phép lên đến khoảng 5400 ký tự. FF và IE9 đã lên đến khoảng 6200 ký tự. Mọi thứ ở trên đều trả về "400 yêu cầu không hợp lệ". Tôi không tiếp tục điều tra những gì có trách nhiệm cho 400. Tôi đã tốt với tối đa tôi tìm thấy, bởi vì tôi cần khoảng 2000 ký tự trong trường hợp của tôi.
cũng xem [yêu cầu HTTP GET tối đa?] (Http://stackoverflow.com/questions/2659952/maximum-length-of-http-get-request) – Bergi
Câu hỏi này đã bị đóng trên cơ sở có câu hỏi tương tự trong SO, nhưng câu hỏi khác đã được hỏi 2 năm sau đó. Do đó điều này không thể là một bản sao. – user902383