Ποια είναι η διαφορά μεταξύ ενός URI, ενός URL και ενός URN;

Οι άνθρωποι μιλούν για τα URL, URI και URN σαν να πρόκειται για διαφορετικά πράγματα, αλλά με γυμνό μάτι φαίνονται το ίδιο.

Ποιες είναι οι διακριτές διαφορές μεταξύ τους;

Λύση

Από το RFC 3986:

Ένα URI μπορεί να ταξινομηθεί περαιτέρω ως εντοπιστής, όνομα ή και τα δύο. Το όρος "Uniform Resource Locator" (URL) αναφέρεται στο υποσύνολο των URIs τα οποία, εκτός από την αναγνώριση ενός πόρου, παρέχουν ένα μέσο τον εντοπισμό του πόρου περιγράφοντας τον κύριο μηχανισμό πρόσβασής του (π.χ., τη δικτυακή του "θέση"). Ο όρος "Ενιαίο όνομα πόρου&quot, (URN) έχει χρησιμοποιηθεί ιστορικά για να αναφέρεται τόσο σε URIs σύμφωνα με το "urn" σχήμα [RFC2141], τα οποία απαιτείται να παραμένουν παγκοσμίως μοναδικά. και επίμονα ακόμη και όταν ο πόρος παύσει να υπάρχει ή γίνει μη διαθέσιμος, και σε οποιοδήποτε άλλο URI με τις ιδιότητες ενός ονόματος.

Έτσι, όλα τα URL είναι URI (στην πραγματικότητα όχι ακριβώς - δείτε παρακάτω), και όλα τα URN είναι URI - αλλά τα URN και τα URL είναι διαφορετικά, οπότε δεν μπορείτε να πείτε ότι όλα τα URI είναι URL.

EDIT: Είχα προηγουμένως σκεφτεί ότι όλα τα URLs είναι έγκυρα URIs, αλλά σύμφωνα με τα σχόλια:

Όχι "όλα τα URLs είναι URIs". Εξαρτάται από την ερμηνεία του RFC. Για παράδειγμα, στη Java ο αναλυτής URI δεν συμπαθεί το [ ή ] και αυτό συμβαίνει επειδή το spec λέει "should not" και όχι "shall not".

Έτσι, δυστυχώς, αυτό θολώνει ακόμη περισσότερο τα νερά.

Αν δεν έχετε ήδη διαβάσει την απάντηση του Roger Pate, θα σας συμβούλευα να το κάνετε επίσης.

Σχόλια (20)

Είναι το ίδιο πράγμα. Ένα URI είναι μια γενίκευση ενός URL. Αρχικά, τα URI σχεδιάστηκε να χωριστούν σε URLs (διευθύνσεις) και URNs (ονόματα), αλλά στη συνέχεια δεν υπήρχε μεγάλη διαφορά μεταξύ ενός URL και ενός URI και τα http URIs χρησιμοποιήθηκαν ως χώροι ονομάτων, παρόλο που στην πραγματικότητα δεν εντόπιζαν πόρους.

Σχόλια (4)

Η Wikipedia θα σας δώσει όλες τις πληροφορίες που χρειάζεστε εδώ. Απόσπασμα από το http://en.wikipedia.org/wiki/URI:

Μια διεύθυνση URL είναι ένα URI που, εκτός από την αναγνώριση ενός πόρου, παρέχει μέσα δράσης ή απόκτησης μιας αναπαράστασης του πόρου περιγράφοντας τον κύριο μηχανισμό πρόσβασης ή τη δικτυακή τοποθεσία του.

Σχόλια (0)