Chiều dài của url là bao nhiêu?

 Jan-08-2021 11:07 AM
#news

Url là thứ mọi người dùng mỗi ngày trên ứng dụng web nhưng bạn đã biết đến giới hạn độ dài của một url khi truyền lên server hay chưa, sẽ ra sao nếu bạn truyền một url quá dài. Bài viết này mình và các bạn sẽ cùng nhau tìm hiểu về những vấn đề này

Độ dài của url được biết nhiều đến với 2000 ký tự

Chiều dài của một url giới hạn trong 2000 ký tự. Với chiều dài giới hạn bởi 2000 ký tự thì việc giao tiếp giữa máy khách và máy chủ sẽ được ổn định.

Nhưng trên lý thuyết thì

RFC 2616(Hypertext Transfer Protocol HTTP/1.1) section 3.2.1 nói rằng

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

Tạm dịch là

Giao thức http không yêu cầu về giới hạn chiều dài của URI. Máy chủ phải có khả năng để xử lý URI từ bất kỳ nguồ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 họ cung cấp các biểu mẫu dựa trên GET có thể tạo ra các URI như vậy. Máy chủ nên trả về lỗi 414 nếu không đủ khả năng để xử lý URI (see section 10.4.15).

Trong thực tế

Trong thực tế, URLs quá dài là một sai lầm. URLs quá 2000 ký tự sẽ không thể thực hiện được trên hầu hết các trình duyệt web hiện tại. Đừng dùng chúng nếu trang web của bạn phục vụ đa số người dùng. theo boutell.com

lưu ý: đây là một bài báo được viết vào năm 2006, nhưng năm 2015 IE's sử dụng những URLs dài hơn cho những công việc chủ đạo. Tuy nhiên IEs vẫn có những giới hạn

Vậy chúng ta có thể hiểu một url không hề có giới hạn về độ dài mà do trình duyệt quyết định chiều dài được gửi lên cho server xử lý và server có đủ khả năng để xử lý url này không. Vậy hãy cùng tìm hiểu xem giới hạn của một số trình duyệt nhé!

Giới hạn của Internet Explorer's IE8's có chiều dài url max là 2083 ký tự, và dường như IE9 có giới hạn tương tự. ở trong IE 10 nếu chúng ta truyền vào đường link dài hơn 2083 ký tự thì thanh địa chỉ cũng chỉ hiện tối đa 2083 ký tự của link đó. Nếu truyền url sẽ sảy ra lỗi.

Giới hạn của firefox Firefox sẽ không hiện thêm bất kỳ ký tự nào nếu bạn truyền vào một url dài hơn 65,536 ký tự. Tuy nhiên với url có giá trị dài hơn thì vẫn có thể thực hiện request tốt.

Giới hạn của opera Ở giới hạn 190,000 ký tự thì opera vẫn hiển thị tốt. Mình không tìm thấy nguồn tin đáng tin cậy nào về giới hạn url của trình duyệt này nên bạn nào biết có thể comment dưới bài viết cho mình biết với nha.

Giới hạn của Chrome MÌnh đọc được ở trang này thì chiều dài mà chrome có thể gửi lên server lên tới 2MB. Và lý do họ đưa ra con số này là để đảm bảo việc giao tiếp với server.

Giới hạn của Apache(server) Do ở trên mình cũng có đề cập đến giới hạn cũng phụ thuộc vào việc server có thể nhận và xử lý url đó. Nên mình dẫn chứng thêm còn Apache này. Theo mình được biết thì Apache sẽ tả về lỗi 413 nếu bạn truyền lên một url dài hơn 4000 ký tự

Vậy url dài có tác hại gì không

Cũng không có ảnh hưởng gì nhiều lắm, vì nếu bạn gửi một url quá dài mà server ko xử lý được như Apache thì nó sẽ trả về lỗi 413 và request đó của bạn sẽ không được thực thi.

Nhưng trước đây thì có vẻ đây là một vấn đề khá nhức nhối, khi mà url bạn truyền lên có thể chứa các đoạn mã dài ví dụ như viết JavaScript, hay mã SQL thì bạn có thể thực hiện những việc phức tạp để gây ảnh hưởng hoặc chuộc lợi. Nhưng bây giờ với công nghệ khoa học phát triển các trình duyệt cũng như server đều được cải tiến để loại bỏ được những lỗi như thế này.

Ngoài ra nó cũng có thể gây ra lỗi "buffer overflow" nhưng như mình nói thì với công nghệ khoa học phát triển ...

Thông qua bài viết này mình đã trình bày hiểu biết của mình về độ dài tối đa của url mong rằng bài viết có thể giúp được bạn 😃

Lê Văn Quang An

Hỗ trợ trực tuyến
Online Offline
Hỗ trợ trực tuyến