Mọi người nói về URL s, URI s và URN s như thể chúng là những thứ khác nhau, nhưng chúng trông giống nhau bằng mắt thường.

Bạn đang xem: Uri là gì

Sự khác biệt có thể phân biệt giữa chúng là gì?

Từ RFC 3986 :

Một URI có thể được phân loại thêm dưới dạng định vị, tên hoặc cả hai. Thuật ngữ “Bộ định vị tài nguyên thống nhất” (URL) dùng để chỉ tập hợp con của các URI, ngoài việc xác định tài nguyên, còn cung cấp phương tiện định vị tài nguyên bằng cách mô tả cơ chế truy cập chính của nó (ví dụ: “vị trí” mạng của nó. Thuật ngữ “Tên tài nguyên thống nhất” (URN) trong lịch sử đã được sử dụng để chỉ cả hai URI theo sơ đồ “urn” , được yêu cầu duy trì toàn cầu và duy trì ngay cả khi tài nguyên không còn tồn tại trở nên không khả dụng và với bất kỳ URI nào khác có thuộc tính của tên.

Vì vậy, tất cả các URL là URI (thực tế không hoàn toàn – xem bên dưới) và tất cả các URN là URI – nhưng URN và URL khác nhau, vì vậy bạn không thể nói rằng tất cả các URI đều là URL.

EDIT: Trước đây tôi đã nghĩ rằng tất cả các URL là URI hợp lệ, nhưng theo nhận xét:

Không phải “tất cả các URL là URI”. Nó phụ thuộc vào sự giải thích của RFC. Ví dụ: trong Java, trình phân tích cú pháp URI không thích và đó là vì thông số kỹ thuật nói “không nên” và không “sẽ không”.

Vì vậy, bùn nước xa hơn, không may.

Nếu bạn chưa đọc Câu trả lời của Roger Pate , tôi cũng khuyên bạn nên làm như vậy.

1643
URI s xác định URL s định vị ; tuy nhiên, công cụ định vị cũng là định danh , vì vậy mọi URL cũng là một URI, nhưng có những URI không phải là URL.

Ví dụ

Roger Pate

Đây là tên của tôi, là một định danh. Nó giống như một URI, nhưng không thể là một URL, vì nó không cho bạn biết gì về vị trí của tôi hoặc cách liên hệ với tôi. Trong trường hợp này, nó cũng xảy ra để xác định ít nhất 5 người khác ở Hoa Kỳ một mình.

4914 Phố Tây Bay, Nassau, Bahamas

Đây là một bộ định vị, là một định danh cho vị trí vật lý đó. Nó giống như cả URL và URI (vì tất cả các URL là URI) và cũng xác định tôi gián tiếp là “cư dân của ..”. Trong trường hợp này, nó xác định duy nhất tôi, nhưng điều đó sẽ thay đổi nếu tôi có bạn cùng phòng.

Tôi nói “thích” vì những ví dụ này không tuân theo cú pháp bắt buộc.

Nhầm lẫn phổ biến

Từ Wikipedia :

Trong điện toán, Bộ định vị tài nguyên đồng nhất (URL) là một tập hợp con của Mã định danh tài nguyên đồng nhất (URI) chỉ định nơi có sẵn một tài nguyên được xác định và cơ chế để truy xuất nó. Trong cách sử dụng phổ biến và trong nhiều tài liệu kỹ thuật và thảo luận bằng lời nói, nó thường được sử dụng không chính xác như một từ đồng nghĩa với URI , …

Do sự nhầm lẫn phổ biến này, nhiều sản phẩm và tài liệu sử dụng không chính xác một thuật ngữ thay vì thuật ngữ khác, gán sự khác biệt của riêng chúng hoặc sử dụng chúng đồng nghĩa.

URN

Tên của tôi, Roger Pate, có thể giống như một URN (Tên tài nguyên thống nhất), ngoại trừ những cái đó được quy định nhiều hơn và dự định là duy nhất trên không gian cả.

Bởi vì tôi hiện đang chia sẻ tên này với những người khác, nó không phải là duy nhất trên toàn cầu và sẽ không phù hợp như một URN. Tuy nhiên, ngay cả khi không có gia đình nào khác sử dụng tên này, tôi được đặt theo tên ông nội của tôi, vì vậy nó vẫn không phải là duy nhất theo thời gian. Và ngay cả khi đó không phải là trường hợp, khả năng đặt tên con cháu của tôi theo tôi khiến điều này không phù hợp là URN.

URN khác với các URL trong ràng buộc duy nhất cứng nhắc này, mặc dù cả hai đều chia sẻ cú pháp của URI.

URI – Mã định danh tài nguyên thống nhất

URI là một tiêu chuẩn để xác định tài liệu bằng cách sử dụng một chuỗi ngắn gồm các số, chữ cái và ký hiệu. Chúng được định nghĩa bởi RFC 3986 – Mã định danh tài nguyên đồng nhất (URI): Cú pháp chung . URL, URN và URC đều là loại của URI.

URL – Bộ định vị tài nguyên thống nhất

Chứa thông tin về cách lấy tài nguyên từ vị trí của nó. Ví dụ:

http://example.com/mypage.htmlftp://example.com/download.Zipfile:///home/user/file.txttel:1-888-555-5555http://example.com/resource?foo=bar#fragment/other/link.html (Một URL tương đối, chỉ hữu ích trong ngữ cảnh của một URL khác)

Các URL luôn bắt đầu bằng một giao thức (http) và thường chứa thông tin như tên Máy chủ mạng (example.com) và thường là đường dẫn tài liệu (/foo/mypage.html). URL có thể có các tham số truy vấn và định danh phân đoạn.

URN – Tên tài nguyên thống nhất

Xác định tài nguyên bằng một tên duy nhất và liên tục, nhưng không nhất thiết phải cho bạn biết cách xác định tài nguyên trên internet. Nó thường bắt đầu bằng tiền tố urn: Ví dụ:

urn:isbn:0451450523 để xác định một cuốn sách bằng số ISBN của nó.urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 một định danh duy nhất toàn cầuurn:publishing:book – Một không gian tên XML xác định tài liệu là một loại sách.

URN có thể xác định ý tưởng và khái niệm. Họ không bị hạn chế để xác định tài liệu. Khi URN đại diện cho một tài liệu, nó có thể được dịch thành một URL bởi một “trình giải quyết”. Tài liệu sau đó có thể được tải xuống từ URL.

URC – Trích dẫn tài nguyên thống nhất

Chỉ vào dữ liệu meta về một tài liệu thay vì chính tài liệu đó. Một ví dụ về URC là một ví dụ chỉ ra mã nguồn HTML của một trang như: view-source:http://example.com/

URI dữ liệu

Thay vì định vị nó trên intehoặc đặt tên cho nó, dữ liệu có thể được đặt trực tiếp vào một URI. Một ví dụ sẽ là data:,Hello%20World.

Các câu hỏi thường gặp

Tôi đã nghe nói rằng tôi không nên nói URL nữa, tại sao?

Thông số W3 cho HTML nói rằng href của thẻ neo có thể chứa URI, không chỉ là một URL. Bạn sẽ có thể đặt URN, chẳng hạn như . Trình duyệt của bạn sau đó sẽ giải quyết URN đó thành một URL và tải xuống sách cho bạn.

Xem thêm: Tìm Câu Trả Lời Cho Biomedical Engineering Là Gì đầy đủ Nhất

Có trình duyệt nào thực sự biết cách tìm nạp tài liệu bằng URN không?

Không phải tôi biết, nhưng trình duyệt web hiện đại thực hiện lược đồ URI dữ liệu.

Sự khác biệt giữa URL và URI có liên quan gì đến việc nó tương đối hay tuyệt đối không?

Không. Cả URL tương đối và tuyệt đối đều là URL (và URI.)

Sự khác biệt giữa URL và URI có liên quan gì đến việc nó có tham số truy vấn không?

Không. Cả hai URL có và không có tham số truy vấn đều là URL (và URI.)

Sự khác biệt giữa URL và URI có liên quan gì đến việc liệu nó có một mã định danh phân đoạn không?

Không. Cả hai URL có và không có số nhận dạng phân đoạn là URL (và URI.)

Sự khác biệt giữa URL và URI có liên quan gì đến các ký tự được phép không?

Số URL được xác định là tập hợp con nghiêm ngặt của URI. Nếu trình phân tích cú pháp cho phép một ký tự trong URL nhưng không phải trong URI, thì có một lỗi trong trình phân tích cú pháp. Thông số kỹ thuật đi sâu vào chi tiết tuyệt vời về các ký tự được phép trong các phần của URL và URI. Một số ký tự có thể chỉ được phép trong một số phần của URL, nhưng riêng các ký tự không phải là sự khác biệt giữa URL và URI.

Nhưng không phải W3C bây giờ nói rằng URL và URI là giống nhau sao?

Vâng. W3C nhận ra rằng có rất nhiều nhầm lẫn về điều này. Họ đã ban hành Tài liệu làm rõ URI nói rằng hiện tại bạn có thể sử dụng các thuật ngữ URL và URI thay thế cho nhau (có nghĩa là URI). Sẽ không còn hữu ích khi phân đoạn nghiêm ngặt các URI thành các loại khác nhau như URL, URN và URC.

URI có thể vừa là URL vừa là URN không?

Định nghĩa của URN bây giờ lỏng lẻo hơn những gì tôi đã nêu ở trên. RFC mới nhất trên các URI nói rằng bất kỳ URI nào hiện tại đều có thể là URN (bất kể nó bắt đầu bằng urn:) miễn là nó có “thuộc tính của tên”. Đó là: Nó là duy nhất trên toàn cầu và tồn tại ngay cả khi tài nguyên không còn tồn tại hoặc không có sẵn. Một ví dụ: Các URI được sử dụng trong các loại tài liệu HTML, chẳng hạn như http://www.w3.org/TR/html4/strict.dtd. URI đó sẽ tiếp tục đặt tên cho loại tài liệu chuyển tiếp HTML4 ngay cả khi trang trên trang web w3bị xóa.

*

Tóm lại: một URI xác định, một URL xác định và định vị.

Hãy xem xét một phiên bản cụ thể của vở kịch của Shakespeare Romeo và Juliet , trong đó bạn có một bản sao kỹ thuật số trên mạng gia đình.

Bạn có thể xác định văn bản là urn:isbn:0-486-27557-4. Đó sẽ là một URI, nhưng cụ thể hơn là một URN * vì nó đặt tên cho văn bản .

Bạn cũng có thể xác định văn bản là file://hostname/sharename/RomeoAndJuliet.pdf. Đó cũng sẽ là một URI, nhưng cụ thể hơn là một URL vì nó định vị văn bản .

* Tên tài nguyên thống nhất

(Lưu ý rằng ví dụ của tôi được điều chỉnh từ Wikipedia )

Đây là một số câu trả lời được viết rất tốt nhưng dài dòng. Đây là sự khác biệt theo như CodeIgniter có liên quan :

URL– http://example.com/some/page.html

URI– /some/page.html

Nói một cách đơn giản, URL là cách đầy đủ để xác định bất kỳ tài nguyên nào ở bất cứ đâu và có thể có các giao thức khác nhau như FTP, HTTP, SCP, v.v.

URI là một tài nguyên trên miền hiện tại, vì vậy nó cần ít thông tin hơn để được tìm thấy.

Trong mọi trường hợp CodeIgniter sử dụng URL Word hoặc URI, đây là điểm khác biệt mà họ đang nói đến, mặc dù trong sơ đồ lớn của web, nó không chính xác 100%.

Trước hết hãy khiến tâm trí bạn bối rối và làm cho nó đơn giản và bạn sẽ hiểu.

URI => Mã định danh tài nguyên thống nhất Xác định địa chỉ đầy đủ của vị trí i-e tài nguyên, tên hoặc cả hai.

URL => Bộ định vị tài nguyên thống nhất Xác định vị trí của tài nguyên.

URN => Tên tài nguyên thống nhất Xác định tên của tài nguyên

Ví dụ

Chúng tôi có địa chỉhttps://www.google.com/folder/page.htmlwhere,

URI (Mã định danh tài nguyên đồng nhất) => https://www.google.com/folder/page.html

URL (Trình định vị tài nguyên đồng nhất) => https://www.google.com/

URN (Tên tài nguyên thống nhất) => /folder/page.html

URI => (URL + URN) hoặc chỉ URL hoặc chỉ URN

Một bổ sung nhỏ cho các câu trả lời đã được đăng, đây là sơ đồ của Venn để tóm tắt lý thuyết (từ lời giải thích giải thích ) của Prateek Joshi:

*

Và một ví dụ (cũng từ trang web của Prateek):

*

Đây là một trong những chủ đề khó hiểu nhất và có thể không liên quan mà tôi gặp phải khi là một chuyên gia web.

Theo tôi hiểu, URI là một mô tả về một cái gì đó, theo một định dạng được chấp nhận, có thể xác định cả hai hoặc tên duy nhất (nhận dạng) của một cái gì đó và vị trí của nó.

Có hai tập hợp con cơ bản – URL, xác định vị trí (đặc biệt là trình duyệt đang cố tìm kiếm trang web) và URN, xác định tên duy nhất của một cái gì đó.

Tôi có xu hướng nghĩ về URN tương tự như GUID. Họ chỉ đơn giản là một phương pháp được tiêu chuẩn hóa để cung cấp tên duy nhất cho mọi thứ. Như trong khai báo không gian tên sử dụng tên của công ty – không giống như có một tài nguyên ngồi trên một máy chủ ở đâu đó để tương ứng với dòng văn bản đó – nó chỉ đơn giản là xác định một cái gì đó.

Tôi cũng có xu hướng tránh hoàn toàn thuật ngữ URI và chỉ thảo luận mọi thứ về URL hoặc URN khi thích hợp, vì nó gây ra nhiều nhầm lẫn. Câu hỏi chúng ta thực sự nên thử trả lời cho mọi người không phải là nhiều ngữ nghĩa, nhưng làm thế nào để xác định khi gặp các điều khoản cho dù có bất kỳ sự khác biệt thực tế nào trong chúng sẽ thay đổi cách tiếp cận với một tình huống lập trình. Ví dụ: nếu ai đó sửa tôi trong cuộc trò chuyện và nói: “ồ, đó không phải là URL thì đó là URI” Tôi biết họ có đầy đủ về nó. Nếu ai đó nói rằng “chúng tôi đang sử dụng URN để xác định tài nguyên” thì nhiều khả năng tôi hiểu rằng chúng tôi chỉ đặt tên cho nó một cách duy nhất, không định vị nó trên máy chủ.

Xem thêm: Core Value Là Gì – Hệ Thống Giá Trị Cốt Lõi

Nếu tôi rời khỏi căn cứ – xin vui lòng cho tôi biết!

Mã định danh = Tên + Vị trí

Mỗi URL (UniformResourceLocator) là một URI (UniformResourceInha sĩ), nói một cách trừu tượng, nhưng mọi URI không phải là một URL. Có một danh mục con khác của URI là URN (UniformResourceName), là tài nguyên được đặt tên nhưng không chỉ định làm thế nào để xác định vị trí của chúng, như mailto, tin tức, ISBN là URI. Nguồn

 

*

URN:

Định dạng URN: urn::urn: và: đứng cho chính họ.Ví dụ : bình: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66bình: ISSN: 0167-6423bình: isbn: 096139210xTên tài nguyên Amazon (ARN) là một tài nguyên AWS duy nhất xác định. Định dạng ARN: arn:partition:service:region:account-id:resource

URL:

Định dạng URL: :///?#:, //,? và # đứng cho chính họ.đề án là https, ftp, Gopher, mailto, tin tức, telnet, tập tin, người đàn ông, thông tin, whatis, ldap …Ví dụ: mailto: địa chỉ emailtin tức: nhóm tin tứctelnet: // ip_server /tệp: // ip_server/path_segmentsldap: // hostport/dn? thuộc tính? scope? filter?

Tương tự: Để tiếp cận một người: Lái xe (giao thức người khác SMS, email, điện thoại), Địa chỉ (tên máy chủ khác số điện thoại, emailid) và tên người (tên đối tượng có đường dẫn tương đối).

Chuyên mục: Hỏi Đáp