Apa perbedaan antara URI, URL, dan URN?

4366

Orang-orang berbicara tentang URL , URI , dan URN seolah-olah itu adalah hal yang berbeda, tetapi mereka terlihat sama dengan mata telanjang.

Apa perbedaan yang bisa dibedakan di antara mereka?

Sean McMains
sumber
158
URL lebih spesifik daripada URI.
mk12
30
Tor webmaster menjawab pertanyaan ini: Apa perbedaan antara URI dan URL
hippietrail
162
Diagram Mini Venn:( URIs ( URLs ) )
icc97
30
Tampaknya masih ada banyak kebingungan tentang URI vs URL, bahkan oleh mereka yang berusaha menjawab pertanyaan itu. Akan bermanfaat bagi semua orang untuk melihat contoh praktis URL yang bukan URI, contoh URI yang bukan URL, dan contoh yang merupakan URL dan URI.
Dennis
30
Kathy: "Apakah itu anjingmu?" Bob: "Akan lebih tepat memanggilnya anjing." Kathy: "Tidak, dia seekor anjing. Anda, Tuan, adalah seorang yang jago."
Yojimbo

Jawaban:

1747

Dari RFC 3986 :

URI dapat diklasifikasikan lebih lanjut sebagai pelacak, nama, atau keduanya. Istilah "Uniform Resource Locator" (URL) mengacu pada subset dari URI yang, selain mengidentifikasi sumber daya, menyediakan cara untuk menemukan sumber daya dengan menjelaskan mekanisme akses utamanya (misalnya, "lokasi" jaringannya). Istilah "Uniform Resource Name" (URN) telah digunakan secara historis untuk merujuk kedua URI di bawah skema "guci" [RFC2141] , yang diperlukan untuk tetap unik secara global dan persisten bahkan ketika sumber daya tidak lagi ada atau menjadi tidak tersedia, dan ke URI lain dengan properti nama.

Jadi semua URL adalah URI (sebenarnya tidak cukup - lihat di bawah), dan semua URN adalah URI - tetapi URN dan URL berbeda, jadi Anda tidak bisa mengatakan bahwa semua URI adalah URL.

EDIT: Saya sebelumnya berpikir bahwa semua URL adalah URI yang valid, tetapi sesuai komentar:

Tidak "semua URL adalah URI". Itu tergantung pada interpretasi RFC. Sebagai contoh di Jawa parser URI tidak suka [atau ]dan itu karena spesifikasi mengatakan "tidak boleh" dan tidak "tidak boleh".

Sehingga membuat air semakin berlumpur, sayangnya.

Jika Anda belum membaca jawaban Roger Pate , saya sarankan Anda juga melakukannya.

Jon Skeet
sumber
15
Hanya URI dengan skema urn: yang merupakan URN. URI bisa berupa URL klasik, URN, atau hanya URI yang tidak dimulai dengan "guci:" dan tidak merujuk ke lokasi sumber daya.
Mark Cidade
18
Tidak " semua URL adalah URI ". Itu tergantung pada interpretasi RFC. Sebagai contoh di Jawa parser URI tidak suka [atau ]dan itu karena spesifikasi mengatakan "tidak boleh" dan tidak "tidak boleh".
Adam Gent
5
@AdamGent: RFC 3986 1.1.3: "URI dapat diklasifikasikan lebih lanjut sebagai pelacak, nama, atau keduanya." Jadi, jika URL adalah jenis URI khusus, itu berarti setiap URL adalah URI. Bukan?
Hubert
14
@AdamGent: Kedengarannya seperti kekhilafan implementasi Java, dan tidak normatif. The java.net.URIdoc sendiri mengatakan "setiap URL adalah URI, abstrak berbicara, tapi tidak setiap URI adalah URL". Dan java.net.URLapakah hal-hal aneh seperti memeriksa kesetaraan URL dengan menyelesaikan nama host ke alamat IP (yang tampaknya bertentangan dengan RFC 3986 detik 6 di tempat pertama, dan merusak host virtual). Saya pikir ini hanya berarti Java Standard Library memiliki beberapa perilaku kelas yang tidak konsisten.
Andrew Janke
3
@ JonSkeet Mungkin hanya perlu membedakan antara standar vs implementasi? Misalnya "Secara resmi, menurut RFC, semua URL adalah URI. (Kutipan RFC.) Tetapi implementasi yang ada mungkin tidak cocok dengan spesifikasi, mungkin untuk interoperabilitas, dan dapat menggunakan URL yang tidak valid per RFC. Dan karena itu adalah area yang rumit , beberapa orang dan dokumen mungkin menggunakan 'URL' untuk mengartikan sesuatu yang berbeda dari hal yang ditentukan RFC. " Agak seperti bagaimana sebagian besar rutinitas validasi email tidak cocok dengan definisi RFC.
Andrew Janke
3842

URI s mengidentifikasi dan URL s menemukan ; namun, pelacak juga merupakan pengidentifikasi , sehingga setiap URL juga merupakan URI, tetapi ada URI yang bukan URL.

Contohnya

  • Roger Pate

Ini nama saya, yang merupakan pengidentifikasi. Itu seperti URI, tetapi tidak bisa menjadi URL, karena tidak memberi tahu Anda tentang lokasi saya atau cara menghubungi saya. Dalam hal ini juga terjadi untuk mengidentifikasi setidaknya 5 orang lain di AS saja.

  • 4914 West Bay Street, Nassau, Bahama

Ini adalah pelacak, yang merupakan pengidentifikasi untuk lokasi fisik itu. Ini seperti URL dan URI (karena semua URL adalah URI), dan juga mengidentifikasi saya secara tidak langsung sebagai "penduduk ..". Dalam hal ini secara unik mengidentifikasi saya, tetapi itu akan berubah jika saya mendapatkan teman sekamar.

Saya mengatakan "suka" karena contoh-contoh ini tidak mengikuti sintaks yang diperlukan.

Kebingungan populer

Dari Wikipedia :

Dalam komputasi, Uniform Resource Locator (URL) adalah subset dari Uniform Resource Identifier (URI) yang menentukan di mana sumber daya yang diidentifikasi tersedia dan mekanisme untuk mengambilnya. Dalam penggunaan populer dan dalam banyak dokumen teknis dan diskusi verbal sering salah digunakan sebagai sinonim untuk URI , ... [penekanan milik saya]

Karena kebingungan umum ini, banyak produk dan dokumentasi salah menggunakan satu istilah, bukan yang lain, menetapkan perbedaan mereka sendiri, atau menggunakannya secara sinonim.

URN

Nama saya, Roger Pate, bisa seperti URN (Uniform Resource Name), kecuali yang jauh lebih diatur dan dimaksudkan untuk menjadi unik di kedua ruang dan waktu.

Karena saya saat ini membagikan nama ini dengan orang lain, itu tidak unik secara global dan tidak akan sesuai sebagai URN. Namun, bahkan jika tidak ada keluarga lain yang menggunakan nama ini, saya dinamai kakek dari pihak ayah saya, jadi itu tidak akan unik sepanjang waktu. Dan bahkan jika itu tidak terjadi, kemungkinan penamaan keturunan saya setelah saya membuat ini cocok sebagai URN a.

URN berbeda dari URL dalam batasan keunikan yang kaku ini, meskipun keduanya berbagi sintaksis URI.

Komunitas
sumber
3
URNs are different from URLs in this rigid uniqueness constraintApakah ini berarti bahwa URL tidak secara unik mengidentifikasi lokasi?
eugene
30
Jawaban Roger memberikan saran pragmatis yang baik. Untuk jawaban resmi saya pergi ke W3C yang menerbitkan " URI, URL, dan URN: Klarifikasi dan Rekomendasi " pada tahun 2001. Singkatnya, W3C mengatakan pandangan kontemporer adalah bahwa semuanya adalah URI. URL adalah konsep informal, bukan konsep formal. Dan kebingungan tanggal kembali ke "pandangan klasik" yang mencoba untuk secara kaku membedakan antara kategori URI (yang URL adalah satu kategori).
netjeff
5
..a Uniform Resource Locator (URL) .. menentukan di mana sumber daya yang diidentifikasi tersedia dan mekanisme untuk mengambilnya . Jadi dengan kata lain, tidak ada yang namanya URL "relatif"?
Arne
9
Apakah "earth128: Edward-de-Leau / 6000000000569063853" (yang unik bagi saya beberapa multiverse) adalah URN, URL, atau URI?
edelwater
6
@edelwater: Saya kira itu uri karena hanya mengidentifikasi Anda tetapi tidak mengatakan bagaimana untuk sampai kepada Anda, kecuali jika Anda maksud earth128 adalah beberapa media perjalanan antar-planet :)
user20358
671

URI - Pengidentifikasi Sumber Seragam

URI adalah standar untuk mengidentifikasi dokumen menggunakan serangkaian pendek angka, huruf, dan simbol. Mereka didefinisikan oleh RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax . URL, URN, dan URC adalah semua jenis URI.

URL - Uniform Resource Locator

Berisi informasi tentang cara mengambil sumber daya dari lokasinya. Sebagai contoh:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:[email protected]
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (URL relatif, hanya berguna dalam konteks URL lain)

URL selalu dimulai dengan protokol ( http) dan biasanya berisi informasi seperti nama host jaringan ( example.com) dan seringkali jalur dokumen ( /foo/mypage.html). URL mungkin memiliki parameter kueri dan pengidentifikasi fragmen.

URN - Nama Sumber Daya Seragam

Identifikasi sumber daya dengan nama yang unik dan persisten, tetapi tidak selalu memberi tahu Anda bagaimana cara menemukannya di internet. Biasanya dimulai dengan awalan urn: Misalnya:

  • urn:isbn:0451450523 untuk mengidentifikasi buku dengan nomor ISBN-nya.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 pengidentifikasi unik secara global
  • urn:publishing:book - Ruang nama XML yang mengidentifikasi dokumen sebagai jenis buku.

URN dapat mengidentifikasi ide dan konsep. Mereka tidak dibatasi untuk mengidentifikasi dokumen. Ketika URN memang mewakili dokumen, itu dapat diterjemahkan ke dalam URL dengan "resolver". Dokumen kemudian dapat diunduh dari URL.

URC - Kutipan Sumber Daya Seragam

Poin ke meta data tentang dokumen daripada ke dokumen itu sendiri. Contoh URC adalah yang menunjuk ke kode sumber HTML halaman seperti:view-source:http://example.com/

URI data

Daripada menempatkannya di internet, atau menamainya, data dapat ditempatkan langsung ke dalam URI. Contohnya adalah data:,Hello%20World.


Pertanyaan yang Sering Diajukan

Saya pernah mendengar bahwa saya seharusnya tidak mengatakan URL lagi, mengapa?

W3 spec untuk HTML mengatakan bahwa hreftag anchor dapat berisi URI, bukan hanya URL. Anda harus bisa memasukkan URN seperti <a href="urn:isbn:0451450523">. Browser Anda kemudian akan menyelesaikan URN ke URL dan mengunduh buku untuk Anda.

Apakah ada browser yang benar-benar tahu cara mengambil dokumen oleh URN?

Bukan yang saya tahu, tetapi browser web modern menerapkan skema data URI.

Apakah perbedaan antara URL dan URI ada hubungannya dengan apakah itu relatif atau absolut?

Tidak. URL relatif dan absolut adalah URL (dan URI.)

Apakah perbedaan antara URL dan URI ada hubungannya dengan apakah URL itu memiliki parameter kueri?

Tidak. Kedua URL dengan dan tanpa parameter kueri adalah URL (dan URI.)

Apakah perbedaan antara URL dan URI ada hubungannya dengan apakah URL itu memiliki pengidentifikasi fragmen?

Tidak. Kedua URL dengan dan tanpa pengidentifikasi fragmen adalah URL (dan URI.)

Apakah perbedaan antara URL dan URI ada hubungannya dengan karakter apa yang diizinkan?

Tidak. URL didefinisikan sebagai subset ketat dari URI. Jika parser mengizinkan karakter dalam URL tetapi tidak dalam URI, ada bug di parser. Spesifikasi menjadi sangat detail tentang karakter mana yang diizinkan di bagian URL dan URI mana. Beberapa karakter mungkin hanya diperbolehkan di beberapa bagian URL, tetapi karakter saja tidak berbeda antara URL dan URI.

Tapi bukankah W3C sekarang mengatakan bahwa URL dan URI adalah hal yang sama?

Iya. W3C menyadari bahwa ada banyak kebingungan tentang ini. Mereka mengeluarkan dokumen klarifikasi URI yang mengatakan bahwa sekarang boleh menggunakan URL istilah dan URI secara bergantian (berarti URI). Tidak lagi berguna untuk mengelompokkan URI secara ketat ke berbagai jenis seperti URL, URN, dan URC.

Bisakah URI berupa URL dan URN?

Definisi URN sekarang lebih longgar dari apa yang saya nyatakan di atas. The RFC terbaru pada URI mengatakan bahwa setiap URI sekarang bisa URN (terlepas dari apakah itu dimulai dengan urn:) asalkan memiliki "sifat-sifat nama." Yaitu: Ini unik secara global dan gigih bahkan ketika sumber daya tidak ada lagi atau menjadi tidak tersedia. Contoh: URI yang digunakan dalam dokumen HTML seperti http://www.w3.org/TR/html4/strict.dtd. URI itu akan terus memberi nama doctype transisi HTML4 bahkan jika halaman di situs web w3.org dihapus.


URI / URL Venn Diagram

Stephen Ostermiller
sumber
8
Apakah "C: \ myfile" adalah URI, URL, atau URN? atau tidak satupun dari mereka.
Bvdb
12
Jalur file bukan URL atau URI kecuali Anda menempatkan file://awalan di atasnya. Meskipun browser umumnya menangani jalur file yang diformat non-URL. Mozilla menerbitkan kotak uji untuk URL file .
Stephen Ostermiller
2
Lihat bagian 1.1 dari RFC - "Keseragaman memberikan beberapa manfaat. Hal ini memungkinkan berbagai jenis pengidentifikasi sumber daya untuk digunakan dalam konteks yang sama, bahkan ketika mekanisme yang digunakan untuk mengakses sumber daya tersebut mungkin berbeda. Hal ini memungkinkan interpretasi semantik seragam dari konvensi sintaksis umum di berbagai jenis pengidentifikasi sumber daya ... "
Stephen Ostermiller
Anda telah menyebutkan mailto:[email protected]sebagai URL tetapi jawaban lain di bawah mengatakan itu adalah URN? Mana yang benar Apakah itu URN dan URL?
user31782
5
Jawaban ini jauh lebih mudah dimengerti. Saya bisa melihat dengan jelas gambar contoh nyata dari URL & URN. Dan bagi siapa saja untuk membaca lebih lanjut tentang ini ... danielmiessler.com/study/url-uri
vee
253

Singkatnya: URI mengidentifikasi, URL mengidentifikasi dan menemukan.

Pertimbangkan edisi khusus drama Shakespeare, Romeo and Juliet , di mana Anda memiliki salinan digitalnya di jaringan rumah Anda.

Anda dapat mengidentifikasi teks sebagai urn:isbn:0-486-27557-4.
Itu akan menjadi URI, tetapi lebih khusus URN * karena nama teks .

Anda juga dapat mengidentifikasi teks sebagai file://hostname/sharename/RomeoAndJuliet.pdf.
Itu juga akan menjadi URI, tetapi lebih khusus URL karena menempatkan teks .

* Nama Sumber Daya Seragam

(Perhatikan bahwa contoh saya diadaptasi dari Wikipedia )

Greg
sumber
6
Sangat membantu untuk mencatat URN yang sebenarnya (untuk melihat bagaimana membandingkannya dengan URL): urn: isbn: 0-486-27557-4
Michael Brewer-Davis
2
@Michael - Ini adalah pemahaman saya yang ISBN 0486275574juga memberi nama teks dan dengan demikian memenuhi syarat sebagai URN. Saya memilih format yang saya yakin akan lebih akrab bagi pembaca.
Greg,
2
Jadi masuk akal untuk mengatakan bahwa hash (misalnya SHA1) dari suatu file bisa menjadi URN untuk file itu?
johnsimer
@ johnsimer Jangan berpikir begitu, karena Anda dapat memiliki salinan satu file di komputer yang sama, yang akan menghasilkan hash yang sama dan karena itu tidak unik.
Dennis98
141

Ini adalah beberapa jawaban yang ditulis dengan sangat baik tetapi panjang lebar. Berikut ini perbedaan sejauh menyangkut CodeIgniter :

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

URI - /some/page.html

Sederhananya, URL adalah cara lengkap untuk mengidentifikasi sumber daya apa pun di mana saja dan dapat memiliki protokol yang berbeda seperti FTP, HTTP, SCP, dll.

URI adalah sumber daya pada domain saat ini, sehingga memerlukan lebih sedikit informasi untuk ditemukan.

Dalam setiap contoh yang CodeIgniter menggunakan URL kata atau URI ini adalah perbedaan yang mereka bicarakan, meskipun dalam skema besar web, itu tidak 100% benar.

Phil Sturgeon
sumber
10
Jawaban ini mungkin terlalu disederhanakan tetapi lihat konteks pertanyaannya. Akan lebih bermanfaat baginya yang membaca tentang ruang nama XML!
Phil Sturgeon
140
Jawaban ini tidak hanya salah tetapi secara aktif menyesatkan. Kedua contoh adalah URL. Dan karena setiap URL juga merupakan URI, ini berarti bahwa kedua contohnya adalah URI. Untuk menunjukkan perbedaan antara URI dan URL, ini sama sekali tidak berguna.
Jörg W Mittag
12
Ini perbedaan sejauh menyangkut CodeIgniter. Dalam setiap contoh mereka menggunakan URL kata atau URI ini adalah perbedaan yang mereka bicarakan. Oleh karena itu dalam skema besar web, itu tidak 100% benar tetapi dalam lingkup pertanyaan OP (perbedaan dalam CodeIgniter), jawaban ini sangat benar.
Phil Sturgeon
12
Ini salah. @ JörgWMittag sebagian besar tepat sasaran. URL adalah URI, dan "berkualifikasi penuh"; jadi "URL" dalam jawaban ini adalah keduanya. Tapi /some/page.htmlbukan URI. Ini adalah "relatif-ref", yang merupakan semacam "referensi-URI". Dikombinasikan dengan konteks dasar URI, ini dapat diselesaikan ke URI, tetapi bukan URI itu sendiri. Lihat Bagian 4.1 dari RFC 3986 . CodeIgniter mungkin menggunakan istilah yang salah dan itu harus dipanggil; Q (seperti yang saat ini diedit) tidak dibingkai sebagai khusus CodeIgniter.
Andrew Janke
37
Untuk orang-orang masa depan yang membaca komentar ini dan sama bingungnya dengan saya: Jawaban ini tidak diposting untuk pertanyaan ini. Pertanyaan ini tidak pernah ada hubungannya dengan CodeIgniter. Ada pertanyaan duplikat yang secara khusus menyebutkan CodeIgniter yang ditutup dan semua jawaban dimigrasikan ke pertanyaan ini. Jawaban ini adalah salah satu yang dipindahkan dari pertanyaan tertutup lama ke pertanyaan terlindungi ini. Meski begitu, saya jawaban ini menyesatkan. Saya telah menurunkannya - orang lain harus melakukan hal yang sama karena, di rumah barunya, itu salah. Penulis harus menghapusnya atau gabungannya dibatalkan.
ArtOfWarfare
92

Pertama-tama, keluarkan pikiran Anda dari kebingungan dan sesederhana itu dan Anda akan mengerti.

URI => Uniform Resource Identifier Mengidentifikasi alamat lengkap sumber daya yaitu lokasi, nama, atau keduanya.

URL => Uniform Resource Locator Mengidentifikasi lokasi sumber daya.

URN => Nama Sumber Daya Seragam Mengidentifikasi nama sumber daya

Contoh

Kami memiliki alamat https://www.google.com/folder/page.html di mana,

URI (Uniform Resource Identifier) ​​=> https://www.google.com/folder/page.html

URL (Uniform Resource Locator) => https://www.google.com/

URN (Nama Sumber Daya Seragam) => /folder/page.html

URI => (URL + URN) atau hanya URL atau hanya URN

Eugen Konkov
sumber
66

Tambahan kecil untuk jawaban yang sudah diposting, inilah diagram Venn untuk merangkum teorinya (dari penjelasan Prateek Joshi yang indah ):

masukkan deskripsi gambar di sini

Dan sebuah contoh (juga dari situs web Prateek):

masukkan deskripsi gambar di sini

Gustavo Mori
sumber
20
Saya percaya ilustrasi kedua tidak benar. Dengan url.spec.whatwg.org/#url-writing URL spesifik harus ditulis sebagai URL relatif atau URL absolut, diikuti opsional oleh "#" dan sebuah fragmen. Jadi, #postspengidentifikasi fragmen dapat menjadi bagian dari URL
ruvim
7
Dua ilustrasi itu saling bertentangan.
patapouf_ai
53

Ini adalah salah satu topik yang paling membingungkan dan mungkin tidak relevan yang saya temui sebagai profesional web.

Seperti yang saya pahami, URI adalah deskripsi dari sesuatu, mengikuti format yang diterima, yang dapat mendefinisikan keduanya atau nama unik (identifikasi) dari sesuatu dan lokasinya.

Ada dua himpunan bagian dasar - URL, yang menentukan lokasi (terutama untuk peramban yang mencoba mencari laman web) dan URN, yang menentukan nama unik sesuatu.

Saya cenderung menganggap URN mirip dengan GUID. Mereka hanyalah metodologi standar untuk memberikan nama unik untuk berbagai hal. Seperti dalam namespace declarative yang menggunakan nama perusahaan - tidak seperti ada sumber daya yang duduk di server di suatu tempat untuk berhubungan dengan baris teks - itu hanya mengidentifikasi sesuatu secara unik.

Saya juga cenderung sepenuhnya menghindari istilah URI dan membahas hal-hal hanya dalam hal URL atau URN yang sesuai, karena hal itu menyebabkan banyak kebingungan. Pertanyaan yang harus benar-benar kita coba jawab untuk orang-orang bukanlah semantik, tetapi bagaimana mengidentifikasi ketika menemukan istilah-istilah apakah ada perbedaan praktis di dalamnya yang akan mengubah pendekatan ke situasi pemrograman. Misalnya, jika seseorang mengoreksi saya dalam percakapan dan berkata, "oh, itu bukan URL itu adalah URI" Saya tahu mereka penuh dengan itu. Jika seseorang mengatakan "kami menggunakan URN untuk menentukan sumber daya" Saya lebih cenderung memahami bahwa kami hanya menamainya secara unik, bukan menempatkannya di server.

Jika saya jauh dari basis - beri tahu saya!

Kevin Lowe
sumber
4
Tidak, saya pikir Anda benar. Semantik URI vs URL vs URL vs URI-ref dll tidak berguna untuk sebagian besar pengembang, hanya karena mendorong perdebatan yang tidak berguna (tidak produktif, tidak penting untuk pengambilan keputusan). Jika Google API digunakan redirect_urlsebagai ganti redirect_uri, apakah ada yang benar-benar peduli?
53

Identity = Nama dengan Lokasi

Setiap URL ( U niform R eSource L ocator) adalah URI ( U niform R eSource I dentifier), abstrak berbicara, tetapi setiap URI tidak URL. Ada subkategori lain URI adalah URN ( U niform R eSource N ame), yang merupakan sumber daya yang bernama tetapi tidak menentukan bagaimana untuk menemukan mereka, seperti mailto, berita, ISBN adalah URI. Sumber

masukkan deskripsi gambar di sini

PASU:

  • Format URN: urn:[namespace identifier]:[namespace specific string]
  • guci: dan: berdiri sendiri.
  • Contoh :
    • guci: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
    • urn: ISSN: 0167-6423
    • guci: isbn: 096139210x
    • Amazon Resource Names (ARNs) adalah sumber daya AWS yang secara unik mengidentifikasi.
      • Format ARN: arn:partition:service:region:account-id:resource

URL:

  • Format URL: [scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
  • :, // ,? dan # berdiri untuk diri mereka sendiri.
  • skema adalah https, ftp, gopher, mailto, berita, telnet, file, man, info, whatis, ldap ...
  • Contoh:

Analogi:
Untuk menjangkau seseorang: Berkendara (protokol lainnya SMS, email, telepon), Alamat (nama host-nomor telepon lain, emailid) dan nama orang (nama objek dengan jalur relatif).

Premraj
sumber
Berdalih minor: Seharusnya ada titik dua antara [domain] dan [port]. IE: example.com:1234
Rex Schrader
42

URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

URL adalah bagian dari URI (yang juga mengandung URN).

Pada dasarnya, URI adalah pengidentifikasi umum, tempat URL menentukan lokasi dan URN menentukan nama.

Craig Wilson
sumber
1
URL bukan bagian sebenarnya dari URI. Anda dapat membuat URL vaid dengan karakter [dan ]bukan URI.
Adam Gent
4
Kurung kotak tidak valid dalam URI atau URL. Lihat pertanyaan ini yang memiliki banyak referensi untuk spesifikasi: Apakah tanda kurung siku diizinkan dalam URL? . Ketika tanda kurung muncul di salah satu, mereka harus dikodekan.
Stephen Ostermiller
35

Contoh lain yang ingin saya gunakan ketika berpikir tentang URI adalah atribut xmlns dari dokumen XML:

<rootElement xmlns:myPrefix="com.mycompany.mynode">
    <myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>

Dalam hal ini com.mycompany.mynode akan menjadi URI yang secara unik mengidentifikasi namespace "myPrefix" untuk semua elemen yang menggunakannya dalam dokumen XML saya. Ini BUKAN URL karena ini hanya digunakan untuk mengidentifikasi, bukan untuk menemukan sesuatu sendiri.

DC
sumber
28

Karena kesulitan untuk membedakan dengan jelas antara URI dan URL, sejauh yang saya ingat W3C tidak membuat perbedaan lagi antara URI dan URL ( http://www.w3.org/Addressing/ ).

manuel aldana
sumber
Mungkin saya melewatkan bagian itu, tetapi saya tidak melihat referensi apa pun di tautan yang disediakan untuk mereka menghapus perbedaan antara URL dan URI, hanya mengakui kebingungan dan menginginkan spesifikasi yang merujuk URL yang tidak benar untuk diperbarui ke referensi URI.
Tim Gautier
27

Mereka adalah hal yang sama . URI adalah generalisasi URL. Awalnya, URI direncanakan untuk dibagi menjadi URL (alamat) dan URN (nama) tetapi kemudian ada sedikit perbedaan antara URL dan URI dan http URI digunakan sebagai ruang nama meskipun mereka tidak benar-benar menemukan sumber daya apa pun.

Mark Cidade
sumber
Saya pikir itu sebaliknya. URL merujuk ke objek konkret, dan URI dapat merujuk pada itu atau konsep atau apa pun.
Chris Charabaruk
4
URL menemukan sumber daya dan sejenis URI, yang mengidentifikasi sumber daya.
Mark Cidade
Memang benar bahwa mereka adalah hal yang sama karena definisi URL telah berubah seiring waktu. URL dulunya adalah tipe spesifik URI, tetapi karena kebingungan yang menyebabkannya, W3C mendefinisikan kembali URL menjadi URI.
Stephen Ostermiller
25

URI dan URL

URI, URL, URN

Seperti yang ditunjukkan gambar di atas, ada tiga komponen berbeda yang berperan di sini. Biasanya lebih baik pergi ke sumber ketika membahas hal-hal seperti ini, jadi inilah kutipan dari Tim Berners-Lee, et. Al. dalam RFC 3986: Uniform Resource Identifier (URI): Sintaks Generik:

Uniform Resource Identifier (URI) adalah urutan karakter yang kompak yang mengidentifikasi sumber daya abstrak atau fisik.

URI dapat diklasifikasikan lebih lanjut sebagai pelacak, nama, atau keduanya. Istilah "Uniform Resource Locator" (URL) mengacu pada subset dari URI yang, selain mengidentifikasi sumber daya, menyediakan cara untuk menemukan sumber daya dengan menjelaskan mekanisme akses utamanya (misalnya, "lokasi" jaringannya).

Adiii
sumber
21

URI adalah jenis kelas super URL dan URN. Wikipedia memiliki artikel bagus tentang mereka dengan tautan ke set RFC yang tepat.

André
sumber
17

Wikipedia akan memberikan semua informasi yang Anda butuhkan di sini. Mengutip dari http://en.wikipedia.org/wiki/URI :

URL adalah URI yang, selain mengidentifikasi sumber daya, menyediakan cara untuk bertindak atas atau memperoleh representasi sumber daya dengan menjelaskan mekanisme akses utama atau "lokasi" jaringannya.

Peter Boughton
sumber
16

URL

URL adalah spesialisasi URI yang mendefinisikan lokasi jaringan sumber daya tertentu. Tidak seperti URN, URL menentukan bagaimana sumber daya dapat diperoleh. Kami menggunakan URL setiap hari dalam bentuk http://example.comdll. Tetapi URL tidak harus berupa URL HTTP, bisa juga ftp://example.comdll.

URI

URI mengidentifikasi sumber daya baik berdasarkan lokasi, atau nama, atau keduanya. Lebih sering daripada tidak, kebanyakan dari kita menggunakan URI yang mendefinisikan lokasi ke sumber daya. Fakta bahwa URI dapat mengidentifikasi sumber daya dengan nama dan lokasi telah menyebabkan banyak kebingungan menurut saya. URI memiliki dua spesialisasi yang dikenal sebagai URL dan URN.

Perbedaan antara URL dan URI

URI adalah pengidentifikasi untuk beberapa sumber daya, tetapi URL memberi Anda informasi spesifik untuk mendapatkan sumber daya itu. URI adalah URL dan seperti yang ditunjukkan oleh seorang komentator, sekarang dianggap tidak benar untuk menggunakan URL saat menjelaskan aplikasi. Secara umum, jika URL menggambarkan lokasi dan nama sumber daya, istilah yang digunakan adalah URI. Karena ini adalah kasus yang biasa kita jumpai setiap hari, URI adalah istilah yang tepat.

Sujit
sumber
15

Sesuai RFC 3986 , URI terdiri dari bagian-bagian berikut:

scheme://authority/path?query

URI menggambarkan protokol untuk mengakses sumber daya ( jalur ) atau aplikasi ( permintaan ) pada server ( otoritas ).

Masukkan deskripsi gambar di sini

Semua URL adalah URI, dan semua URN adalah URI, tetapi semua URI bukan URL.

Silakan merujuk untuk detail lebih lanjut:

Wikipedia

Prashanth Sams
sumber
3
Ini tidak mengajari saya apa pun yang tidak tercakup oleh jawaban lain yang setidaknya berusia 6 tahun, dan yang jauh lebih lengkap dan benar-benar mencoba menjelaskan cara membedakan URI dari URL.
ccjmne
2
Penting untuk dicatat bahwa gambar tersebut adalah diagram Venn meskipun tidak terlihat seperti yang biasa. Saya telah melihat orang mencoba menafsirkannya sebagai "bagian dari URL". Diagram ini tidak mengatakan bahwa URI mulai dengan URL dan diakhiri dengan URN.
Stephen Ostermiller
14

URI mengidentifikasi sumber daya baik berdasarkan lokasi, atau nama, atau keduanya. Lebih sering daripada tidak, kebanyakan dari kita menggunakan URI yang mendefinisikan lokasi ke sumber daya. Fakta bahwa URI dapat mengidentifikasi sumber daya dengan nama dan lokasi telah menyebabkan banyak kebingungan menurut saya. URI memiliki dua spesialisasi yang dikenal sebagai URL dan URN.

URL adalah spesialisasi URI yang mendefinisikan lokasi jaringan sumber daya tertentu. Tidak seperti URN, URL menentukan bagaimana sumber daya dapat diperoleh. Kami menggunakan URL setiap hari dalam bentuk http://stackoverflow.com , dll. Tetapi URL tidak harus berupa URL HTTP, bisa juga ftp://example.com, dll.

Swapnil
sumber
11

Meskipun istilah URI dan URL didefinisikan secara ketat, banyak yang menggunakan istilah itu untuk hal-hal lain daripada yang didefinisikan.

Mari kita ambil Apache sebagai contoh. Jika http://example.com/foo diminta dari server Apache, Anda akan menetapkan variabel lingkungan berikut:

  • REDIRECT_URL: /foo
  • REQUEST_URI: /foo

Dengan mod_rewrite diaktifkan, Anda juga akan memiliki variabel-variabel ini:

  • REDIRECT_SCRIPT_URL: /foo
  • REDIRECT_SCRIPT_URI: http://example.com/foo
  • SCRIPT_URL: /foo
  • SCRIPT_URI: http://example.com/foo

Ini mungkin menjadi alasan untuk beberapa kebingungan.

Gumbo
sumber
10

Lihat dokumen ini . Secara khusus,

URL adalah jenis URI yang mengidentifikasi sumber daya melalui representasi mekanisme akses utama (misalnya, "lokasi" jaringannya), daripada oleh beberapa atribut lain yang mungkin dimilikinya.

Ini bukan istilah yang sangat jelas.

avpx
sumber
10

Setelah membaca posting, saya menemukan beberapa komentar yang sangat relevan. Singkatnya, kebingungan antara URL dan definisi URI didasarkan pada bagian di mana definisi tergantung pada mana dan juga penggunaan informal kata URI dalam pengembangan perangkat lunak.

Menurut definisi, URL adalah himpunan bagian dari URI [RFC2396]. URI berisi URN dan URL. Baik URI dan URL masing-masing memiliki sintaksis khusus masing-masing yang memberi mereka status sebagai URI atau URL. URN adalah untuk mengidentifikasi sumber daya secara unik sementara URL untuk menemukan sumber daya. Perhatikan bahwa sumber daya dapat memiliki lebih dari satu URL tetapi hanya URN tunggal. [RFC2611]

Sebagai pengembang dan pemrogram web kami hampir selalu akan peduli dengan URL dan karenanya URI. Sekarang URL didefinisikan secara khusus untuk memiliki semua skema bagian: skema-bagian-spesifik, seperti misalnya https://stackoverflow.com/questions . Ini adalah URL dan juga URI. Sekarang pertimbangkan tautan relatif yang tertanam di halaman seperti ../index.html. Ini bukan lagi URL menurut definisi. Ini masih apa yang disebut sebagai "referensi-URI" [RFC2396].

Saya percaya bahwa ketika kata URI digunakan untuk merujuk pada jalur relatif, "referensi-URI" sebenarnya adalah apa yang sedang dipikirkan. Jadi secara informal, sistem perangkat lunak menggunakan URI untuk merujuk pada jalur relatif dan URL untuk alamat absolut. Jadi dalam hal ini, jalur relatif bukan lagi URL tetapi masih URI.

paul r
sumber
10

Ini penyederhanaan saya:

URN: nama sumber daya unik, yaitu "apa" (misalnya, guci: issn: 1234-5678). Ini dimaksudkan untuk menjadi unik .. karena tidak ada dua dokumen yang berbeda dapat memiliki guci yang sama. Agak seperti "uuid"

URL: "di mana" untuk menemukannya (mis . Https://google.com/pub?issnid=1234-5678 .. atau ftp://somesite.com/doc8.pdf )

URI: bisa berupa URN atau URL. Definisi fuzzy ini berkat RFC 3986 yang diproduksi oleh W3C dan IETF.

Definisi URI telah berubah selama bertahun-tahun, sehingga masuk akal bagi kebanyakan orang untuk bingung. Namun, Anda sekarang dapat mengambil pelipur lara pada kenyataan bahwa Anda dapat merujuk ke http://somesite.com/something baik sebagai URL atau URI ... dan Anda akan benar juga (setidaknya untuk saat itu tetap saja .. .)

jjolla
sumber
9

Saya bertanya-tanya tentang hal yang sama dan saya telah menemukan ini: http://docs.kohanaphp.com/helpers/url .

Anda dapat melihat contoh yang jelas menggunakan url::current()metode ini. Jika Anda memiliki URL ini : http://example.com/kohana/index.php/welcome/home.html?query=stringkemudian menggunakan url:current()memberi Anda URI yang, menurut dokumentasi, adalah: welcome / home

dierre
sumber
1
Jawaban ini salah. URI bukan bagian dari URL. Sebaliknya URL adalah jenis URI. Selanjutnya, tautan dalam jawaban ini rusak (dan saya tidak dapat menemukan pengganti yang cocok.)
Stephen Ostermiller
8

URI muncul dari kebutuhan untuk mengidentifikasi sumber daya di Web, dan sumber daya Internet lainnya seperti kotak surat elektronik dengan cara yang seragam dan koheren. Jadi, seseorang dapat memperkenalkan jenis widget baru: URI untuk mengidentifikasi sumber daya widget atau menggunakan tel: URI untuk memiliki tautan web yang menyebabkan panggilan telepon dilakukan saat dipanggil.

Beberapa URI menyediakan informasi untuk menemukan sumber daya (seperti nama host DNS dan jalur di mesin itu), sementara beberapa digunakan sebagai nama sumber daya murni. The URL dicadangkan untuk pengidentifikasi yang adalah pencari sumber daya , termasuk 'http' URL seperti http://stackoverflow.com , yang mengidentifikasi halaman web di jalan yang diberikan pada host. Contoh lain adalah URL 'mailto', seperti mailto: [email protected] , yang mengidentifikasi kotak surat di alamat yang diberikan.

URN adalah URI yang digunakan sebagai nama sumber daya murni daripada pelacak. Misalnya, URI: pertengahan: [email protected] adalah URN yang mengidentifikasi pesan email yang berisi pesan itu di bidang 'Message-Id'. URI berfungsi untuk membedakan pesan itu dari pesan email lainnya. Tapi itu sendiri tidak memberikan alamat pesan di toko mana pun.

dpant
sumber
7

Untuk menjawab ini saya akan mengandalkan jawaban yang saya modifikasi untuk pertanyaan lain . Contoh yang baik dari URI adalah bagaimana Anda mengidentifikasi sumber daya Amazon S3. Mari kita ambil:

s3://www-example-com/index.html [ara. 1]

yang saya buat sebagai salinan cache

http://www.example.com/index.html [ara. 2]

di pusat data S3-US-West-2 Amazon .

Bahkan jika StackOverflow akan memungkinkan saya untuk hyperlink ke skema s3:// protokol , itu tidak ada gunanya bagi Anda untuk menemukan sumber daya. Karena Mengidentifikasi suatu Sumber Daya , ara. 1 adalah URI yang valid. Ini juga merupakan URN yang valid, karena Amazon mensyaratkan bahwa bucket (istilah mereka untuk authorityporsi URI) unik di seluruh pusat data. Ini membantu dalam menemukan itu, tetapi tidak menunjukkan pusat data. Karena itu tidak berfungsi sebagai URL.

Jadi, bagaimana perbedaan URI, URL, dan URN dalam hal ini?

CATATAN: RFC 3986 mendefinisikan URI sebagaischeme://authority/path?query#fragment

Bruno Bronosky
sumber
6

Mudah dijelaskan:

Mari kita asumsikan yang berikut ini

URI adalah Nama Anda

URL adalah alamat Anda dengan nama Anda untuk berkomunikasi dengan Anda.

  • nama saya Loyola

    Loyola adalah URI

  • alamat saya adalah TN, Chennai 600001.

TN, Chennai 600 001, Loyola adalah URL

Semoga kamu mengerti,

Sekarang mari kita lihat contoh yang tepat

http://www.google.com/fistpage.html

di atas Anda dapat berkomunikasi dengan halaman yang disebut firstpage.html ( URI ) menggunakan http://www.google.com/fistpage.html ( URL ) berikut.

Karenanya URI adalah subset dari URL tetapi tidak sebaliknya.

loyola
sumber
4
Jawaban ini menyesatkan. Kutipan dari Wikipedia "Uniform Resource Name (URN) berfungsi seperti nama seseorang, sedangkan Uniform Resource Locator (URL) menyerupai alamat jalan orang itu. Dengan kata lain: URN mendefinisikan identitas item, sedangkan URL menyediakan metode untuk menemukan Itu." Juga URN dan URL adalah URI.
Vegan Sv
4

Uniform Resource Identifier (URI) adalah serangkaian karakter yang mengidentifikasi Sumber Daya Internet.

URI yang paling umum adalah Uniform Resource Locator (URL) yang mengidentifikasi alamat domain Internet. Jenis lain, yang tidak terlalu umum dari URI adalah Nama Sumber Daya Universal (URN).


sumber
4

Saya menemukan:


Pengidentifikasi sumber daya yang seragam (URI) mewakili gambaran besar. Anda dapat membagi URI / URI dapat diklasifikasikan sebagai pelacak (uniform resource locators- URL), atau sebagai nama (uniform resource name-URN), atau keduanya. Jadi pada dasarnya, fungsi URN seperti nama seseorang dan URL menggambarkan alamat orang itu. Singkat cerita, sebuah URN mendefinisikan identitas suatu barang, sementara URL menyediakan mendefinisikan metode untuk menemukannya, akhirnya merangkum kedua konsep ini adalah URI

Rakeeb Rajbhandari
sumber
2

Ringkasan imo (teknis) terbaik adalah yang ini

IRI, URI, URL, URN, dan perbedaannya dari Jan Martin Keil:

IRI, URI, URL, URN, dan perbedaannya

Setiap orang yang berurusan dengan Web Semantik berulang kali menemukan istilah IRI , URI , URL , dan URN . Namun demikian, saya sering mengamati bahwa ada beberapa kebingungan tentang arti tepatnya. Dan, tentu saja, orang lain juga memperhatikan hal itu (lihat misalnya RFC3305 atau cari di Google). Sejujurnya, saya bahkan bingung pada awalnya. Namun sebenarnya masalahnya tidak serumit itu. Mari kita lihat definisi dari istilah yang disebutkan untuk melihat perbedaannya:

URI

Sebuah Identifier Uniform Resource adalah urutan kompak karakter yang mengidentifikasi sumber daya abstrak atau fisik. Set karakter terbatas untuk US-ASCII tidak termasuk beberapa karakter yang dipesan. Karakter di luar set karakter yang diizinkan dapat direpresentasikan menggunakan Percent-Encoding. URI dapat digunakan sebagai pencari lokasi, nama, atau keduanya. Jika URI adalah pelacak, itu menggambarkan mekanisme akses primer sumber daya. Jika URI adalah nama, itu mengidentifikasi sumber daya dengan memberinya nama yang unik. Spesifikasi persis sintaks dan semantik URI tergantung pada Skema yang digunakan yang ditentukan oleh karakter sebelum titik dua pertama. [RFC3986]

PASU

Sebuah Uniform Resource Name adalah URI dalam skema guci dimaksudkan untuk melayani sebagai terus-menerus, identifier sumber daya, lokasi-independen. Secara historis, istilah ini juga merujuk ke URI mana pun. [RFC3986] URN terdiri dari Namespace Identifier (NID) dan Namespace Specific String (NSS): urn :: Sintaks dan semantik NSS spesifik untuk setiap NID. Selain NID terdaftar, ada beberapa NID lagi, yang tidak melalui proses registrasi resmi. [RFC2141]

URL

Sebuah Uniform Resource Locator adalah URI yang, selain mengidentifikasi sumber daya, menyediakan sarana mencari sumber daya dengan menjelaskan mekanisme akses utama [RFC3986]. Karena tidak ada definisi yang pasti dari URL melalui serangkaian Skema, "URL adalah konsep yang berguna tetapi informal", biasanya merujuk pada subset URI yang tidak mengandung URN [RFC3305].

IRI

Sebuah internasionalisasi Resource Identifier didefinisikan sama dengan URI, tetapi karakter set diperluas ke Universal Kode Character Set. Oleh karena itu, dapat berisi karakter Latin dan non Latin kecuali karakter yang dipesan. Alih-alih memperluas definisi URI, istilah IRI diperkenalkan untuk memungkinkan perbedaan yang jelas dan menghindari ketidakcocokan. IRI dimaksudkan untuk menggantikan URI dalam mengidentifikasi sumber daya dalam situasi di mana Set Karakter Universal Code didukung. Menurut definisi, setiap URI adalah IRI. Selain itu, ada pemetaan suryektif yang ditetapkan dari IRI ke URI: Setiap IRI dapat dipetakan ke tepat satu URI, tetapi IRI yang berbeda mungkin memetakan ke URI yang sama. Oleh karena itu, konversi kembali dari URI ke IRI mungkin tidak menghasilkan IRI asli. [RFC3987]

Meringkas kita dapat mengatakan:

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 = ∅)

Kesimpulan untuk Masalah Web Semantik

RDF secara eksplisit memungkinkan untuk menggunakan IRI untuk memberi nama entitas [RFC3987]. Ini berarti bahwa kita dapat menggunakan hampir setiap karakter dalam nama entitas. Di sisi lain, kita sering harus berurusan dengan perangkat lunak keadaan awal. Dengan demikian, tidak mungkin mengalami masalah menggunakan karakter non ASCII. Karena itu, saya menyarankan untuk menghindari nama-nama non-URI untuk entitas dan merekomendasikan untuk menggunakan http URI [LINKED-DATA]. Singkatnya: hanya gunakan URL untuk memberi nama entitas Anda. Tentu saja, kita bisa merujuk ke entitas yang ada yang dinamai oleh URN. Namun, kita harus menghindari untuk membuat pengidentifikasi semacam ini.

Mischa
sumber