Mọi người nói về URL , URI và URN 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.
Sự khác biệt có thể phân biệt giữa chúng là gì?
( URIs ( URLs ) )
Mọi người nói về URL , URI và URN 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.
Sự khác biệt có thể phân biệt giữa chúng là gì?
( URIs ( URLs ) )
Câu trả lời:
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 đồ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" [RFC2141] , được yêu cầu duy trì 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, và cho bất kỳ URI nào khác với 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 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
[
hoặc]
đó 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.
[
hoặc ]
đó là vì thông số kỹ thuật nói "không nên" và không "sẽ không".
java.net.URI
tài liệu nói rằng "mỗi URL là một URI, nói một cách trừu tượng, nhưng không phải mọi URI đều là một URL". Và java.net.URL
thực hiện những thứ kỳ lạ như kiểm tra sự bình đẳng của các URL bằng cách phân giải tên máy chủ thành địa chỉ IP (có vẻ như mâu thuẫn với RFC 3986 giây 6 ở vị trí đầu tiên và phá vỡ các máy chủ ảo). Tôi nghĩ rằng điều này chỉ có nghĩa là Thư viện tiêu chuẩn Java có một số hành vi lớp không nhất quán.
Xác định URI và URL s định vị ; tuy nhiên, trình đị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.
Đâ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.
Đâ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.
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 tài nguyên được xác định và cơ chế truy xuất nó. Trong 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 , ... [nhấn mạnh của tôi]
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.
Tên của tôi, Roger Pate, có thể giống như URN (Tên tài nguyên thống nhất), ngoại trừ những tên được quy định nhiều hơn và dự định là duy nhất trong cả không gian và thời gian.
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ư là 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 với tư cách 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.
URNs are different from URLs in this rigid uniqueness constraint
Điều này có nghĩa là các URL không xác định duy nhất một vị trí?
Các 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 là tất cả các loại URI.
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.html
ftp://example.com/download.zip
mailto:user@example.com
file:///home/user/file.txt
tel:1-888-555-5555
http://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.
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 trên 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.
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/
Thay vì định vị nó trên internet hoặ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
.
Thông số W3 cho HTML nói rằng href
thẻ neo có thể chứa URI, không chỉ là URL. Bạn sẽ có thể đặt một URN như <a href="urn:isbn:0451450523">
. 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.
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.
Không. Cả URL tương đối và tuyệt đối đều là URL (và URI.)
Không. Cả hai URL có và không có tham số truy vấn đều là URL (và URI.)
Không. Cả hai URL có và không có số nhận dạng phân đoạn là URL (và URI.)
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.
Đú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 một tài liệu làm rõ URI nói rằng bây giờ bạn có thể sử dụng các thuật ngữ URL và URI thay thế cho nhau (có nghĩa là URI). 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.
Định nghĩa của URN bây giờ lỏng lẻo hơn những gì tôi đã nêu ở trên. Các RFC mới nhất về URI nói rằng bây giờ bất kỳ URI có thể là một URN (bất kể nó bắt đầu với urn:
) miễn là nó có "tính chất của một 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 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 w3.org bị xóa.
file://
tiền tố vào đó. Mặc dù các trình duyệt thường xử lý các đường dẫn tệp không được định dạng URL. Mozilla xuất bản các trường hợp thử nghiệm của họ cho các URL tệp .
mailto:user@example.com
dưới dạng URL nhưng một câu trả lời khác bên dưới cho biết đó là URN? Cái nào đúng? Có phải cả URN và URL?
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 Romeo và Juliet của Shakespeare , 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à 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 )
ISBN 0486275574
cũng đặt tên cho văn bản và do đó đủ điều kiện là URN. Tôi chọn một định dạng mà tôi tin rằng sẽ quen thuộc hơn với độc giả.
Đâ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 khi có liên quan đến CodeIgniter :
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 từ 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%.
/some/page.html
không phải là một URI. Nó là một "tham chiếu tương đối", là một loại "tham chiếu URI". Kết hợp với bối cảnh URI cơ sở, nó có thể được phân giải thành URI, nhưng bản thân nó không phải là URI. Xem Phần 4.1 của RFC 3986 . CodeIgniter có thể sử dụng các thuật ngữ sai và điều đó nên được gọi ra; Q (như được chỉnh sửa hiện tại) không được đóng khung là CodeIgniter dành riêng.
Trước hết hãy làm cho tâm trí của bạn thoát khỏi sự nhầm lẫn 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 một địa chỉ đầy đủ của tài nguyên tức là vị trí, 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
Thí dụ
Chúng tôi có địa chỉ https://www.google.com/folder/page.html ở đâu,
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 thố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 tuyệt đẹp của Prateek Joshi ):
Và một ví dụ (cũng từ trang web của Prateek):
#posts
nhận dạng phân đoạn có thể là một phần của URL
Đâ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 nằm trên một máy chủ ở đâu đó để tương ứng với dòng văn bản đó - nó chỉ đơn giản 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 tình huống lập trình hay không. 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ủ.
Nếu tôi rời khỏi căn cứ - xin vui lòng cho tôi biết!
redirect_url
thay vì redirect_uri
, có ai thực sự quan tâm?
Danh tính = Tên với vị trí
Mỗi URL ( U niform R esource L ocator) là một URI ( U niform R esource tôi dentifier), 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 tiểu thể loại của URI là URN ( U niform R esource N ame), đó là một nguồn tài nguyên tên nhưng không xác định làm thế nào để xác định vị trí họ, như mailto, tin tức, ISBN là URI. Nguồn
ĐÔ THỊ:
urn:[namespace identifier]:[namespace specific string]
arn:partition:service:region:account-id:resource
URL:
[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
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).
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL là một tập hợp con của URI (cũng chứa URN).
Về cơ bản, URI là một mã định danh chung, trong đó URL chỉ định vị trí và URN chỉ định tên.
[
và ]
không phải là URI.
Một ví dụ khác tôi muốn sử dụng khi nghĩ về URI là thuộc tính xmlns của tài liệu XML:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
Trong trường hợp này com.mycompany.mynode sẽ là một URI xác định duy nhất không gian tên "myPrefix" cho tất cả các thành phần sử dụng nó trong tài liệu XML của tôi. Đây KHÔNG phải là một URL bởi vì nó chỉ được sử dụng để xác định, không xác định vị trí nào đó.
Do những khó khăn để phân biệt rõ ràng giữa URI và URL, theo như tôi nhớ, W3C không còn tạo ra sự khác biệt nữa giữa URI và URL ( http://www.w3.org/Addressing/ ).
Chúng giống nhau . URI là một khái quát của một URL. Ban đầu, các URI được lên kế hoạch chia thành URL (địa chỉ) và URN (tên) nhưng sau đó có rất ít sự khác biệt giữa URL và URI và http URI được sử dụng làm không gian tên mặc dù chúng không thực sự tìm thấy bất kỳ tài nguyên nào.
URI, URL, URN
Như hình ảnh trên cho thấy, có ba thành phần riêng biệt đang chơi ở đây. Thông thường tốt nhất là đi đến nguồn khi thảo luận về những vấn đề như thế này, vì vậy đây là một đoạn trích từ Tim Berners-Lee, et. al. trong RFC 3986: Mã định danh tài nguyên đồng nhất (URI): Cú pháp chung:
Mã định danh tài nguyên đồng nhất (URI) là một chuỗi ký tự nhỏ gọn xác định tài nguyên trừu tượng hoặc vật lý.
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ữ Đị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 mạng).
URI là loại siêu hạng của URL và URN. Wikipedia có một bài viết hay về họ với các liên kết đến tập hợp RFC phù hợp.
Wikipedia sẽ cung cấp tất cả các thông tin bạn cần ở đây. Trích dẫn từ http://en.wikipedia.org/wiki/URI :
URL là một URI, ngoài việc xác định tài nguyên, còn cung cấp các phương tiện để hành động hoặc có được sự thể hiện của tài nguyên bằng cách mô tả cơ chế truy cập chính hoặc "vị trí" mạng của nó.
URL
URL là một chuyên môn của URI xác định vị trí mạng của một tài nguyên cụ thể. Không giống như URN, URL xác định cách lấy tài nguyên. Chúng tôi sử dụng URL mỗi ngày dưới dạng http://example.com
vv Nhưng một URL không phải là URL HTTP, nó có thể là URLftp://example.com
, v.v.
URI
Một URI xác định tài nguyên theo vị trí hoặc tên hoặc cả hai. Thường xuyên hơn không, hầu hết chúng ta sử dụng các URI xác định vị trí cho tài nguyên. Việc một URI có thể xác định tài nguyên theo cả tên và vị trí đã dẫn đến nhiều sự nhầm lẫn trong quan điểm của tôi. Một URI có hai chuyên ngành được gọi là URL và URN.
Sự khác biệt giữa URL và URI
URI là mã định danh cho một số tài nguyên, nhưng URL cung cấp cho bạn thông tin cụ thể để lấy tài nguyên đó. URI là một URL và như một người bình luận đã chỉ ra, hiện tại nó được coi là không chính xác khi sử dụng URL khi mô tả các ứng dụng. Nói chung, nếu URL mô tả cả vị trí và tên của tài nguyên, thuật ngữ sử dụng là URI. Vì đây thường là trường hợp mà hầu hết chúng ta gặp phải hàng ngày, URI là thuật ngữ chính xác.
Theo RFC 3986 , các URI bao gồm các phần sau:
scheme://authority/path?query
URI mô tả giao thức để truy cập tài nguyên ( đường dẫn ) hoặc ứng dụng ( truy vấn ) trên máy chủ ( cơ quan ).
Tất cả các URL là URI và tất cả các URN đều là URI, nhưng tất cả các URI không phải là URL.
Vui lòng tham khảo để biết thêm chi tiết:
Một URI xác định tài nguyên theo vị trí hoặc tên hoặc cả hai. Thường xuyên hơn không, hầu hết chúng ta sử dụng các URI xác định vị trí cho tài nguyên. Việc một URI có thể xác định tài nguyên theo cả tên và vị trí đã dẫn đến nhiều sự nhầm lẫn trong quan điểm của tôi. Một URI có hai chuyên ngành được gọi là URL và URN.
URL là một chuyên môn của URI xác định vị trí mạng của một tài nguyên cụ thể. Không giống như URN, URL xác định cách lấy tài nguyên. Chúng tôi sử dụng URL mỗi ngày dưới dạng http://stackoverflow.com , v.v. Nhưng một URL không phải là URL HTTP, nó có thể ftp://example.com
, v.v.
Mặc dù các thuật ngữ URI và URL được xác định nghiêm ngặt, nhiều người sử dụng các thuật ngữ cho những thứ khác ngoài chúng được định nghĩa.
Hãy lấy Apache làm ví dụ. Nếu http://example.com/foo được yêu cầu từ máy chủ Apache, bạn sẽ có các biến môi trường sau được đặt:
REDIRECT_URL
: /foo
REQUEST_URI
: /foo
Khi bật mod_rewrite, bạn cũng sẽ có các biến sau:
REDIRECT_SCRIPT_URL
: /foo
REDIRECT_SCRIPT_URI
: http://example.com/foo
SCRIPT_URL
: /foo
SCRIPT_URI
: http://example.com/foo
Đây có thể là lý do cho một số nhầm lẫn.
Xem tài liệu này . Đặc biệt,
URL là một loại URI xác định tài nguyên thông qua biểu diễn cơ chế truy cập chính của nó (ví dụ: "vị trí" mạng của nó, chứ không phải bởi một số thuộc tính khác mà nó có thể có.
Đó thực sự không phải là một thuật ngữ cực kỳ rõ ràng.
Sau khi đọc qua các bài viết, tôi tìm thấy một số ý kiến rất liên quan. Nói tóm lại, sự nhầm lẫn giữa các định nghĩa URL và URI dựa một phần vào định nghĩa nào phụ thuộc vào việc sử dụng từ nào và cũng không chính thức của từ URI trong phát triển phần mềm.
Theo định nghĩa, URL là tập con của URI [RFC2394]. URI chứa URN và URL. Cả URI và URL đều có cú pháp cụ thể riêng để xác định trạng thái là URI hoặc URL. URN là để xác định duy nhất một tài nguyên trong khi URL là để định vị tài nguyên. Lưu ý rằng một tài nguyên có thể có nhiều hơn một URL nhưng chỉ có một URN duy nhất. [RFC2611]
Là nhà phát triển và lập trình web, chúng tôi hầu như sẽ luôn quan tâm đến URL và do đó là URI. Bây giờ một URL được xác định cụ thể để có tất cả các lược đồ bộ phận: phần cụ thể theo sơ đồ, ví dụ như https://stackoverflow.com/questions . Đây là một URL và nó cũng là một URI. Bây giờ hãy xem xét một liên kết tương đối được nhúng trong trang như ../index.html. Đây không còn là một URL theo định nghĩa. Nó vẫn là cái được gọi là "tham chiếu URI" [RFC2394].
Tôi tin rằng khi từ URI được sử dụng để chỉ các đường dẫn tương đối, "tham chiếu URI" thực sự là những gì đang được nghĩ đến. Vì vậy, không chính thức, các hệ thống phần mềm sử dụng URI để chỉ đường dẫn tương đối và URL cho địa chỉ tuyệt đối. Vì vậy, theo nghĩa này, một đường dẫn tương đối không còn là URL mà vẫn là URI.
Đây là sự đơn giản hóa của tôi:
URN: tên tài nguyên duy nhất, nghĩa là "cái gì" (ví dụ: urn: issn: 1234-5678). Điều này có nghĩa là duy nhất .. vì không có hai tài liệu khác nhau có thể có cùng một chiếc bình. Một chút như "uuid"
URL: "nơi" để tìm thấy nó (ví dụ: https://google.com/pub?issnid=1234-5678 .. hoặc ftp://somesite.com/doc8.pdf )
URI: có thể là URN hoặc URL. Định nghĩa mờ này là nhờ RFC 3986 được sản xuất bởi W3C và IETF.
Định nghĩa về URI đã thay đổi qua nhiều năm, vì vậy nó có ý nghĩa đối với hầu hết mọi người bị nhầm lẫn. Tuy nhiên, bây giờ bạn có thể an ủi trong thực tế rằng bạn có thể tham khảo http://somesite.com/s Something dưới dạng URL hoặc URI ... bạn cũng sẽ đúng (ít nhất là trong thời gian nào đó .. .)
Tôi đã tự hỏi về điều tương tự và tôi đã tìm thấy điều này: http://docs.kohanaphp.com/helpers/url .
Bạn có thể thấy một ví dụ rõ ràng bằng cách sử dụng url::current()
phương pháp. Nếu bạn có URL này : http://example.com/kohana/index.php/welcome/home.html?query=string
thì việc sử dụng url:current()
sẽ cung cấp cho bạn URI , theo tài liệu, là: welcome / home
Các URI xuất phát từ nhu cầu xác định tài nguyên trên Web và các tài nguyên Internet khác như hộp thư điện tử một cách thống nhất và mạch lạc. Vì vậy, người ta có thể giới thiệu một loại tiện ích mới: URI để xác định tài nguyên tiện ích hoặc sử dụng tel: URI để có liên kết web khiến các cuộc gọi điện thoại được thực hiện khi được gọi.
Một số URI cung cấp thông tin để định vị tài nguyên (như tên máy chủ DNS và đường dẫn trên máy đó), trong khi một số được sử dụng làm tên tài nguyên thuần túy. Các URL được dành riêng cho định danh đó là định vị tài nguyên , trong đó có 'http' URL như http://stackoverflow.com , trong đó xác định các trang web tại đường dẫn nhất định trên máy chủ. Một ví dụ khác là các URL 'mailto', chẳng hạn như mailto: fred@mail.org , xác định hộp thư tại địa chỉ đã cho.
URN là các URI được sử dụng làm tên tài nguyên thuần túy hơn là các trình định vị. Ví dụ: URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com là URN xác định thông điệp email có chứa trong trường 'Id tin nhắn' của nó. URI phục vụ để phân biệt tin nhắn đó với bất kỳ thông báo email nào khác. Nhưng bản thân nó không cung cấp địa chỉ tin nhắn trong bất kỳ cửa hàng nào.
Để trả lời câu hỏi này, tôi sẽ dựa vào câu trả lời mà tôi đã sửa đổi sang câu hỏi khác . Một ví dụ điển hình về URI là cách bạn xác định tài nguyên Amazon S3. Hãy thực hiện:
s3://www-example-com/index.html
[quả sung. 1]
mà tôi đã tạo như một bản sao lưu trữ của
http://www.example.com/index.html
[quả sung. 2]
trong S3-US-West-2 của Amazon trung tâm dữ liệu .
Ngay cả khi StackOverflow sẽ cho phép tôi siêu liên kết đến sơ đồ s3://
giao thức , nó sẽ không giúp ích gì cho bạn trong việc định vị tài nguyên. Bởi vì nó xác định một tài nguyên , hình. 1 là một URI hợp lệ. Nó cũng là một URN hợp lệ, bởi vì Amazon yêu cầu nhóm (thuật ngữ của họ cho authority
phần URI) là duy nhất trên các trung tâm dữ liệu. Nó rất hữu ích trong việc định vị nó, nhưng nó không chỉ ra trung tâm dữ liệu. Do đó, nó không hoạt động như một URL.
Vậy, URI, URL và URN khác nhau như thế nào trong trường hợp này?
LƯU Ý: RFC 3986 định nghĩa các URI làscheme://authority/path?query#fragment
Dễ giải thích:
Hãy giả sử như sau
URI là tên của bạn
URL là địa chỉ của bạn với tên của bạn để liên lạc với bạn.
tôi tên là Loyola
Loyola là URI
Địa chỉ của tôi là TN, Chennai 600001.
TN, Chennai 600 001, Loyola là URL
Mong là bạn hiểu,
Bây giờ hãy xem một ví dụ chính xác
http://www.google.com/fistpage.html
ở trên, bạn có thể giao tiếp với một trang có tên Firstpage.html ( URI ) bằng cách sử dụng http://www.google.com/fistpage.html ( URL ).
Do đó, URI là tập hợp con của URL nhưng không phải ngược lại.
Mã định danh tài nguyên đồng nhất (URI) là một chuỗi các ký tự xác định tài nguyên Internet.
URI phổ biến nhất là Bộ định vị tài nguyên đồng nhất (URL) xác định địa chỉ tên miền Internet. Một loại URI không phổ biến khác là Tên tài nguyên chung (URN).
Tôi đã tìm thấy:
Một định danh tài nguyên thống nhất (URI) đại diện cho một cái gì đó của một bức tranh lớn. Bạn có thể phân chia URI / URI có thể được phân loại thành bộ định vị (bộ định vị tài nguyên thống nhất - URL) hoặc dưới dạng tên (tên tài nguyên thống nhất - URN) hoặc cả hai. Về cơ bản, URN hoạt động như tên của một người và URL mô tả địa chỉ của người đó. Tóm lại, URN xác định danh tính của một mặt hàng, trong khi URL cung cấp định nghĩa phương thức tìm kiếm nó, cuối cùng gói gọn hai khái niệm này là URI
Imo tóm tắt (kỹ thuật) tốt nhất là cái này
IRI, URI, URL, URN và sự khác biệt của họ từ Jan Martin Keil:
Mọi người giao dịch với Semantic Web liên tục gặp các thuật ngữ IRI , URI , URL và URN . Tuy nhiên, tôi thường xuyên quan sát thấy có một số nhầm lẫn về ý nghĩa chính xác của chúng. Và, tất nhiên, những người khác cũng nhận thấy điều đó (xem ví dụ RFC3305 hoặc tìm kiếm trên Google). Thành thật mà nói, tôi thậm chí đã bối rối ngay từ đầu. Nhưng thực ra vấn đề không phức tạp lắm. Chúng ta hãy xem định nghĩa của các thuật ngữ được đề cập để xem sự khác biệt là gì:
Một Resource Identifier Uniform là một chuỗi nhỏ gọn của ký tự xác định một tài nguyên trừu tượng hoặc thể chất. Tập hợp các ký tự được giới hạn ở US-ASCII, ngoại trừ một số ký tự dành riêng. Các ký tự bên ngoài bộ ký tự được phép có thể được biểu diễn bằng Mã hóa phần trăm. Một URI có thể được sử dụng làm công cụ định vị, tên hoặc cả hai. Nếu một URI là một trình định vị, nó mô tả cơ chế truy cập chính của tài nguyên. Nếu một URI là một tên, nó xác định một tài nguyên bằng cách đặt cho nó một tên duy nhất. Các thông số kỹ thuật chính xác của cú pháp và ngữ nghĩa của một URI phụ thuộc vào Lược đồ được sử dụng được xác định bởi các ký tự trước dấu hai chấm đầu tiên. [RFC3986]
Một Uniform Resource Name là một URI trong urn chương trình nhằm làm dai dẳng, vị trí độc lập, định danh tài nguyên. Trong lịch sử, thuật ngữ này cũng đề cập đến bất kỳ URI nào. [RFC3986] URN bao gồm Mã định danh không gian tên (NID) và Chuỗi cụ thể không gian tên (NSS): urn :: Cú pháp và ngữ nghĩa của NSS cụ thể cho từng NID. Bên cạnh các NID đã đăng ký, còn tồn tại một số NID khác, không trải qua quá trình đăng ký chính thức. [RFC2141]
Bộ định vị tài nguyên đồng nhất là một 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ó [RFC3986]. Vì không có định nghĩa chính xác về URL bằng một tập hợp các Lược đồ, "URL là một khái niệm hữu ích nhưng không chính thức", thường đề cập đến một tập hợp con URI không chứa URNs [RFC3305].
Một quốc tế hóa Resource Identifier được định nghĩa tương tự như một URI, nhưng bộ ký tự được mở rộng đến các Character Set phổ Coded. Do đó, nó có thể chứa bất kỳ ký tự Latinh và phi Latinh nào ngoại trừ các ký tự dành riêng. Thay vì mở rộng định nghĩa về URI, thuật ngữ IRI được giới thiệu để cho phép phân biệt rõ ràng và tránh sự không tương thích. IRI có nghĩa là để thay thế các URI trong việc xác định tài nguyên trong các tình huống trong đó Bộ ký tự mã hóa phổ quát được hỗ trợ. Theo định nghĩa, mỗi URI là một IRI. Hơn nữa, có một ánh xạ so sánh được xác định của IRI thành URI: Mỗi IRI có thể được ánh xạ tới chính xác một URI, nhưng các IRI khác nhau có thể ánh xạ tới cùng một URI. Do đó, việc chuyển đổi trở lại từ URI sang IRI có thể không tạo ra IRI ban đầu. [RFC3987]
IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)
RDF rõ ràng cho phép sử dụng IRI để đặt tên cho các thực thể [RFC3987]. Điều này có nghĩa là chúng ta có thể sử dụng hầu hết mọi ký tự trong tên thực thể. Mặt khác, chúng ta thường phải đối phó với phần mềm nhà nước sớm. Do đó, không có khả năng gặp vấn đề khi sử dụng các ký tự không phải ASCII. Do đó, tôi khuyên bạn nên tránh các tên không phải URI cho các thực thể và khuyên bạn nên sử dụng http URI [LINKED-DATA]. Nói ngắn gọn: chỉ sử dụng URL để đặt tên cho các thực thể của bạn. Tất nhiên, chúng ta có thể đề cập đến các thực thể hiện có được đặt tên bởi URN. Tuy nhiên, chúng ta nên tránh tạo mới loại định danh này.