Sự khác biệt giữa URI và URL là gì?


44

Tôi đã đọc những trang này:

Tôi biết cơ bản về URL, URN và URI; nhưng ít về sự khác biệt của họ . Điều tôi không thể hiểu là trong một trang như: http://www.bernzilla.com/item.php?id=100phần nào là URL, URN và URI!
URI là toàn bộ nhưng URL và URN ??

Hình ảnh từ wikipedia

Chỉnh sửa:
từ w3c.org:

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ó.

từ www.damnhandy.com :

Bây giờ được coi là không chính xác để sử dụng URL khi mô tả các ứng dụng.

Bây giờ là idmột thuộc tính? Phần ứng dụng thì sao? PHP có phải là một ứng dụng không?


3
Câu hỏi này đã được hỏi trên Stack Overflow một vài lần và nhận được nhiều sự chú ý và phản hồi tốt: Sự khác biệt giữa URI và URL là gì?
hà mã

Câu trả lời:


42

Sơ đồ Venn URI / URL

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.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.

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

Xác định một tài nguyên bằng một tên duy nhất và liên tục. 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ầu
  • urn: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 "bộ giải". Tài liệu sau đó có thể được tải xuống từ URL.

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

Các URI bao gồm URL, URN và các cách khác để xác định tài nguyên.

Một ví dụ về URI không phải là URL cũng không phải URN sẽ là URI dữ liệu, chẳng hạn như data:,Hello%20World. Nó không phải là URL cũng không phải là URN vì URI chứa dữ liệu. Nó không đặt tên cho nó, cũng không cho bạn biết cách xác định vị trí của nó qua mạng.

Ngoài ra còn có các trích dẫn tài nguyên thống nhất (URC) trỏ đến 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 sẽ là một định danh để xem mã nguồn của trang web : view-source:http://example.com/. URC là một loại URI khác không phải là URL cũng không phải URN.

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 hrefthẻ neo có thể chứa URI, không chỉ là URL. Bạn sẽ có thể đặ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.

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.)

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

Đú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.

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. 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.


Điều khiến tôi bối rối về việc làm rõ W3C và phân biệt URL / URI là trên thực tế có rất nhiều tài liệu máy chủ web mô tả URL là toàn bộ chuỗi yêu cầu và URI là "phần theo giao thức". Nó thậm chí còn tham chiếu phần đó bằng tên biến $ uri. Ví dụ: nginx.com/blog/creating-nginx-rewrite-rules Điều này không đúng "đúng" theo định nghĩa của W3C? Nhưng nó hữu ích nhất tôi nghĩ.
mike

1
URI đã bị hiểu lầm rộng rãi. Nhiều người nghĩ rằng URI là một phần của URL giống như URL tương đối hoặc theo giao thức. Điều này không bao giờ đúng, nhưng những ý tưởng đó đã biến nó thành tài liệu máy chủ hoặc vào API lập trình khá thường xuyên.
Stephen Ostermiller

10

Tôi nghĩ rằng những bài viết giải thích khá tốt. Để trả lời câu hỏi của bạn - tất cả điều này là một URL:

http://www.bernzilla.com/item.php?id=100

Mỗi bit của nó - http: www.bernzilla.comvà như vậy có tên riêng của nó:

  • http: là chương trình
  • www là tên miền phụ
  • bernzilla.com là tên miền
  • com là tên miền cấp cao nhất hoặc TLD
  • (có thể có một thư mục hoặc đường dẫn ở đó, ví dụ /dir/item.php nhưng không có)
  • item.php là trang hoặc tên tệp có phần mở rộng php
  • id = 100 là chuỗi truy vấn

Tôi có thể thấy được đưa ra sơ đồ đó từ wikipedia tại sao bạn hỏi mặc dù. Sơ đồ đó nói rằng có hai loại URI - URL và URN và bit mờ ở giữa là khi một cái gì đó có thể là cả hai.


Cảm ơn về câu trả lời. Tôi đã chỉnh sửa câu hỏi của tôi. bạn có thể nhìn lại không?
hoàn tác

Tôi không hiểu câu nói đó về việc mô tả các ứng dụng và tôi không thể thấy một bình luận nơi ai đó chỉ ra điều đó. Tôi sẽ cập nhật câu trả lời của tôi để mô tả các phần riêng biệt.
paulmorriss

@paul bạn không có nghĩa là URI trong dòng đầu tiên? id=100không phải là một vị trí , nó là một chỉ số.
DisgruntledGoat

Tôi nghĩ tôi có nghĩa là URL. Với một số trang web nếu bạn thay đổi id, bạn sẽ nhận được các "trang" khác nhau trong tiếng nói bình thường. Đọc định nghĩa về tài nguyên trên wikipedia tôi nghĩ rằng một trang là một ví dụ về tài nguyên.
paulmorriss

7

Đây không phải là trường hợp mà URL bạn đề cập bao gồm cả phần URL và URN.

http://www.bernzilla.com/item.php?id=100 vừa là URL vừa là URI.

Về cơ bản các URI là một siêu tập hợp của URL và của URN. Có một số trùng lặp giữa các URL và URN là tốt.

Một URI xác định tài nguyên theo vị trí hoặc tên hoặc cả hai.

Vì vậy, bất kỳ URL nào là URI, bất kỳ URN nào cũng là URI, nhưng không phải mọi URI đều là URL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.