URI、URL、URNの違いは何ですか?
質問
人々は URL 、 URI 、および URN について、それらは異なるものであるかのように話しますが、肉眼。
それらの際立った違いは何ですか?
解決
RFC 3986 から:
URIは、ロケーター、名前、またはその両方としてさらに分類できます。の 用語「Uniform Resource Locator」 (URL)はURIのサブセットを指します リソースを識別することに加えて、 プライマリアクセスメカニズムを記述してリソースを見つける (例:ネットワークの「場所」)。用語「均一なリソース名」 (URN)は歴史的に、両方のURIを参照するために使用されてきました " urn" scheme [RFC2141] 、これはグローバルに一意であるために必要です リソースが存在しなくなったり、リソースがなくなった場合でも持続します 使用不可、および名前のプロパティを持つ他のURIに。
したがって、すべてのURLはURI(実際には完全ではありません-以下を参照)、およびすべてのURNはURIです-ただし、URNとURLは異なるため、すべてのURIがURLであるとは言えません。
編集:以前はすべてのURLは有効なURIであると考えていましたが、コメントどおりです:
ではありません"すべてのURLはURIです"。 RFCの解釈に依存します。たとえば、Javaでは、URIパーサーは
[
または]
を好みません。これは、仕様に「するべきではない」と書かれているためです。 「ではない」ではありません。
それにより、残念ながら、さらに水が濁ります。
Roger Pateの回答をまだ読んでいない場合は、そうすることをお勧めします。
>他のヒント
URI が識別および URL sの位置;ただし、ロケーターも識別子であるため、すべてのURLもURIですが、URLではないURIもあります。
例
- ロジャーパテ
これは私の名前であり、識別子です。 これはURIのようなものですが、URLにすることはできません。私の場所や連絡方法については何も伝えないからです。 この場合、米国だけで少なくとも5人の他の人を識別することもあります。
- 4914 West Bay Street、ナッソー、バハマ
これはロケーターであり、その物理的な場所の識別子です。 これはURLとURIの両方に似ており(すべてのURLはURIであるため)、を識別します間接的に「..の住民」として。 この場合、私を一意に識別しますが、ルームメイトを取得すると変更されます。
「いいね」と言うこれらの例は必要な構文に従っていないためです。
人気の混乱
ウィキペディアから:
コンピューティングにおいて、Uniform Resource Locator(URL)は、識別されたリソースが利用できる場所とそれを取得するメカニズムを指定するUniform Resource Identifier(URI)のサブセットです。 一般的な使用法、および多くの技術文書や口頭での議論では、URIの同義語として誤って使用されることがよくあります、... [emphasis mine]
この一般的な混乱のため、多くの製品およびドキュメントでは、ある用語を他の用語ではなく誤って使用したり、独自の区別を割り当てたり、同義語として使用したりしています。
URN
私の名前であるロジャー・パテは、 URN (Uniform Resource Name)のようになりますが、それらははるかに規制され、空間と時間の両方で両方ユニークになるように意図されています。
この名前は現在他の人と共有しているため、グローバルに一意ではなく、URNとしては適切ではありません。ただし、他の家族がこの名前を使用していなかったとしても、父方の祖父にちなんで名付けられているので、時間の経過とともに一意になることはありません。そして、それがそうでなかったとしても、私の子孫を私にちなんで命名する可能性は、これをURNとして不適切にします。
URNは、URIの構文を共有しているにもかかわらず、この厳格な一意性制約のURLとは異なります。
URI- Uniform Resource Identifier
URIは、数字、文字、記号の短い文字列を使用してドキュメントを識別するための標準です。これらは、 RFC 3986-Uniform Resource Identifier(URI):Generic Syntax で定義されています。 URL、URN、およびURCはすべてURIのタイプです。
URL- Uniform Resource Locator
その場所からリソースを取得する方法に関する情報が含まれています。例:
-
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
(相対URL、別のURLのコンテキストでのみ有用)
URLは常にプロトコル( http
)で始まり、通常はネットワークホスト名( example.com
)などの情報と、多くの場合ドキュメントパス( /foo/mypage.html
)。 URLにはクエリパラメータとフラグメント識別子が含まれる場合があります。
URN- Uniform Resource Name
リソースを一意で永続的な名前で識別しますが、必ずしもインターネット上でリソースを見つける方法を示しているわけではありません。通常、接頭辞 urn:
で始まります。例:
-
ISBN番号で本を識別するための
-
urn:isbn:0451450523
。 -
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
グローバルに一意の識別子 -
urn:publishing:book
-ドキュメントを書籍の種類として識別するXML名前空間。
URNはアイデアや概念を特定できます。ドキュメントの識別に限定されません。 URNがドキュメントを表す場合、「リゾルバー」によってURLに変換できます。その後、ドキュメントをURLからダウンロードできます。
URC-Uniform Resource Citation
ドキュメント自体ではなく、ドキュメントに関するメタデータを指します。 URCの例は、次のようなページのHTMLソースコードを指すものです: view-source:http://example.com/
データURI
インターネット上で検索したり名前を付けたりするのではなく、データをURIに直接配置できます。例は、 data:、Hello%20World
です。
よくある質問
もうURLを言うべきではないと聞いたのですが、なぜですか?
HTMLのW3仕様では、 hrefアンカータグの
には、URLだけでなくURIを含めることができます。 < a href =" urn:isbn:0451450523">
などのURNを入力できるはずです。ブラウザはそのURNをURLに解決し、本をダウンロードします。
URNでドキュメントを取得する方法を実際に知っているブラウザはありますか?
私が知っていることではありませんが、最新のWebブラウザはデータURIスキームを実装しています。
URLとURIの違いは、相対か絶対かに関係がありますか?
いいえ。相対URLと絶対URLはどちらもURL(およびURI)です。
URLとURIの違いは、クエリパラメータがあるかどうかに関係がありますか
いいえ。クエリパラメータを含むURLと含まないURLはどちらもURL(およびURI)です。
URLとURIの違いは、フラグメント識別子があるかどうかに関係していますか?
いいえ。フラグメントideの有無にかかわらず両方のURL
要約: URIが識別し、URLが識別および検索します。
シェイクスピアの戯曲の特定のエディションを考えてくださいロミオとジュリエット、あなたはホームネットワークにデジタルコピーを持っています。
テキストは urn:isbn:0-486-27557-4
として識別できます。
これはURIですが、より具体的には URN *です。 テキストに名前を付ける。
テキストを file://hostname/sharename/RomeoAndJuliet.pdf
として識別することもできます。
これはURIでもありますが、具体的には URL です。これは、テキストを見つけるためです。
* Uniform Resource Name
(私の例は、 Wikipedia から改変されていることに注意してください)
これらは、非常によく書かれているが長々とした答えです。 CodeIgniterに関する限り、違いは次のとおりです:
URL - http://example.com/some/page.html
URI -/some/page.html
簡単に言えば、URLはどこでもリソースを識別する完全な方法であり、FTP、HTTP、SCPなどのさまざまなプロトコルを使用できます。
URIは現在のドメイン上のリソースであるため、必要な情報は少なくなります。
CodeIgniterがURLまたはURIという単語を使用するすべてのインスタンスで、これは彼らが話している違いですが、ウェブの大まかな体系では100%正確ではありません。
まず、混乱からあなたの心を解き、それを単純にしてください。理解できます。
URI => Uniform Resource Identifier リソースi-eの場所、名前、またはその両方の完全な住所を示します。
URL => Uniform Resource Locator リソースの場所を識別します。
URN =>統一リソース名 リソースの名前を識別します
例
アドレスは https://www.google.com/folder/pageです。 html ここで、
URI(Uniform Resource Identifier)=> https://www.google.com/folder/page.html
URL(Uniform Resource Locator)=> https://www.google.com/
URN(Uniform Resource Name)=> /folder/page.html
URI => (URL + URN)またはURLのみまたはURNのみ
これは、私がWebプロフェッショナルとして出会った中で最も紛らわしく、おそらく無関係なトピックの1つです。
私が理解しているように、URIは、受け入れられた形式に従って何かの説明であり、何かとその場所の両方またはいずれかの一意の名前(識別)を定義できます。
2つの基本的なサブセットがあります-場所を定義するURL(特にWebページを検索しようとするブラウザー)と、何かの一意の名前を定義するURNです。
URNはGUIDに似ていると考える傾向があります。それらは、物に固有の名前を付けるための標準化された方法論にすぎません。会社の名前を使用する名前空間宣言のように-テキストのその行に対応するサーバー上のどこかにリソースがあるようではありません-それは単に何かを一意に識別します。
また、URIという用語を完全に避け、必要に応じてURLまたはURNの観点からのみ議論する傾向があります。人々のために本当に答えるべき質問はセマンティクスではありませんが、プログラミング状況へのアプローチを変えるような実際的な違いがあるかどうかを用語に出会うときに識別する方法です。たとえば、誰かが会話中に私を修正し、「ああ、それはURLではなくURIだ」と言った場合、私は彼らがそれに満ちていることを知っています。 「リソースの定義にURNを使用している」と誰かが言った場合、サーバー上に配置するのではなく、一意に名前を付けるだけであることを理解する可能性が高くなります。
基地を離れる場合-お知らせください!
識別子=名前+場所
すべてのURL( U niform R esource L ocator)はURI( U niform R esource I 識別子)、抽象的に言えば、すべてのURIはURLではありません。 URIには、URN( U niform R esource N ame)という別のサブカテゴリがあります。これは名前付きリソースですが、検索方法を指定しませんそれらは、mailto、news、ISBNはURIです。 ソース
URN:
- URN形式:
urn:[名前空間識別子]:[名前空間固有の文字列]
- urn:および:自分自身を表します。
- 例:
- urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
- urn:ISSN:0167-6423
- urn:isbn:096139210x
- Amazonリソース名( ARN)は、AWSリソースを一意に識別するものです。
- ARN形式:
arn:partition:service:region:account-id:resource
- ARN形式:
URL:
- URL形式:
[scheme]:// [Domain] [Port] / [path]?[queryString]#[fragmentId]
- :、// 、?そして#自分自身を表す。
- スキームはhttps、ftp、gopher、mailto、news、telnet、file、man、info、whatis、ldap ...
- 例:
- http:// ip_server / path?query
- ftp:// ip_server / path
- mailto:email-address
- news:newsgroup-name
- telnet:// ip_server /
- file:// ip_server / path_segments
- ldap:// hostport / dn?attributes?scope?filter?extensions
アナロジー:
人に連絡するには:運転(プロトコル、その他SMS、電子メール、電話)、住所(ホスト名、その他の電話番号、emailid)および人名(相対パスのオブジェクト名)。
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URLはURIのサブセットです(これにはURNも含まれます)。
基本的に、URIは一般的な識別子で、URLは場所を指定し、URNは名前を指定します。
URIについて考えるときに使用したい別の例は、XMLドキュメントのxmlns属性です。
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
この場合、com.mycompany.mynodeは、「myPrefix」を一意に識別するURIです。 XMLドキュメント内でそれを使用するすべての要素の名前空間。これはURLにはなりません。なぜなら、それ自体を特定するためではなく、識別するためにのみ使用されるからです。
URIとURLを明確に区別するのが難しいため、W3CがURIとURLの間に違いをもたらさないことを覚えている限り( http://www.w3.org/Addressing/ )。
これらは同じものです。 URIはURLの一般化です。当初、URIはURL(アドレス)とURN(名前)に分割される予定でしたが、URLとURIにはほとんど違いがなく、実際にはリソースを見つけられなかったにもかかわらず、http URIが名前空間として使用されました。
URI、URL、URN
上の画像が示すように、ここには3つの異なるコンポーネントがあります。通常、このような問題について議論するときはソースにアクセスするのが最善です。そのため、ここではTim Berners-Leeなどからの抜粋です。 al。に RFC 3986:Uniform Resource Identifier(URI):Generic Syntax:
URI(Uniform Resource Identifier)は、 抽象リソースまたは物理リソースを識別する文字。
URIは、ロケーター、名前、またはその両方としてさらに分類できます。の term&#8220; Uniform Resource Locator&#8221; (URL)はURIのサブセットを指します リソースを識別することに加えて、 プライマリアクセスメカニズムを記述してリソースを見つける (例:ネットワーク&#8220;場所&#8221;)。
URIは、一種のURLおよびURNのスーパークラスです。ウィキペディアには細かい記事があり、RFCの適切なセットへのリンクが記載されています。
URL
URLは、特定のリソースのネットワークロケーションを定義するURIの特殊化です。 URNとは異なり、URLはリソースの取得方法を定義します。 http://example.com
などの形式で毎日URLを使用します。ただし、URLはHTTP URLである必要はなく、 ftp:// exampleでもかまいません。 com
なども同様です。
URI
URIは、場所、名前、またはその両方によってリソースを識別します。ほとんどの場合、リソースの場所を定義するURIを使用します。 URIが名前と場所の両方でリソースを識別できるという事実は、私の意見では多くの混乱を招いています。 URIには、URLとURNとして知られる2つの専門分野があります。
URLとURIの違い
URIはあるリソースの識別子ですが、URLはそのリソースを取得するための特定の情報を提供します。 URIはURLであり、1人のコメント者が指摘したように、アプリケーションを記述するときにURLを使用することは正しくないと見なされています。一般に、URLがリソースの場所と名前の両方を記述する場合、使用する用語はURIです。これは一般的に私たちのほとんどが毎日遭遇するケースであるため、URIは正しい用語です。
ウィキペディアは、ここで必要なすべての情報を提供します。 http://en.wikipedia.org/wiki/URI から引用:
URLは、リソースの識別に加えて、その主なアクセスメカニズムまたはネットワークの「場所」を記述することにより、リソースの表現に基づいて行動または取得する手段を提供するURIです。
URIは、場所、名前、またはその両方によってリソースを識別します。ほとんどの場合、リソースの場所を定義するURIを使用します。 URIが名前と場所の両方でリソースを識別できるという事実は、私の意見では多くの混乱を招いています。 URIには、URLとURNとして知られる2つの専門分野があります。
URLは、特定のリソースのネットワークロケーションを定義するURIの特殊化です。 URNとは異なり、URLはリソースの取得方法を定義します。私たちは毎日 http://stackoverflow.com などの形式でURLを使用していますが、URLはHTTPである必要はありませんURL。 ftp://example.com
などです。
URIおよびURLという用語は厳密に定義されていますが、多くの場合、定義されている以外の用語を使用しています。
たとえば、Apacheを見てみましょう。 http://example.com/foo がApacheサーバーから要求された場合、次のようになります。環境変数セット:
-
REDIRECT_URL
:/ foo
-
REQUEST_URI
:/ foo
mod_rewriteを有効にすると、次の変数も使用できます。
-
REDIRECT_SCRIPT_URL
:/ foo
-
REDIRECT_SCRIPT_URI
:http://example.com/foo
-
SCRIPT_URL
:/ foo
-
SCRIPT_URI
:http://example.com/foo
これが混乱の原因である可能性があります。
このドキュメントを参照してください。具体的には、
URLは、他の属性ではなく、プライマリアクセスメカニズム(ネットワークの「場所」など)の表現を介してリソースを識別するURIの一種です。
非常に明確な用語ではありません、本当に。
投稿を読んだ後、非常に関連性の高いコメントを見つけました。要するに、URL定義とURI定義の混乱は、ソフトウェア開発におけるURIという単語の非公式な使用にも依存する定義に一部基づいています。
定義により、URLはURI [RFC2396]のサブセットです。 URIにはURNとURLが含まれます。 URIとURLには、それぞれURIまたはURLであるというステータスを付与する固有の構文があります。 URNはリソースを一意に識別するためのもので、URLはリソースを見つけるためのものです。リソースには複数のURLを含めることができますが、URNは1つだけです。[RFC2611]
Web開発者およびプログラマーとして、私たちはほとんど常にURL、したがってURIに関心があります。これで、たとえば https://stackoverflow.com/questions。これはURLであり、URIでもあります。ここで、.. / index.htmlなどのページに埋め込まれた相対リンクを検討します。これは、定義によるURLではなくなりました。 「URI参照」と呼ばれるものはまだです。 [RFC2396]。
URIという言葉を使用して相対パスを参照すると、&quot; URI-reference&quot;実際に考えられているものです。したがって、非公式に、ソフトウェアシステムはURIを使用して相対アドレスと絶対アドレスのURLを参照します。この意味で、相対パスはURLではなくURIになります。
これは私の簡略化です:
URN:一意のリソース名、つまり&quot; what&quot; (例:urn:issn:1234-5678)。 2つの異なるドキュメントが同じurnを持つことはできないため、これは一意であることを意味します。 「uuid」のようなビット
URL:&quot; where&quot;見つけるには(例: https://google.com/pub?issnid=1234-5678 ..または ftp://somesite.com/doc8.pdf )
URI:URNまたはURLのいずれかです。このあいまいな定義は、W3CおよびIETFが作成したRFC 3986のおかげです。
URIの定義は長年にわたって変更されているため、ほとんどの人が混乱するのは理にかなっています。ただし、 http://somesite.com/something を次のように参照できるという事実に満足することができます。 URLまたはURI ...どちらにしても正しい(少なくともとりあえず...)
私は同じことを考えていて、これを見つけました: http://docs.kohanaphp .com / helpers / url 。
url :: current()
メソッドを使用すると、明確な例を見ることができます。
この URL がある場合: http://example.com/kohana/index.php/welcome/home.html?query=string
を使用して、 url: current()
は、 URI を提供します。ドキュメントによると、 welcome / home
URIは、Web上のリソース、および電子メールボックスなどのその他のインターネットリソースを統一された一貫した方法で識別する必要から生じました。そのため、新しいタイプの widget: URIを導入して widget リソースを識別したり、 tel: URIを使用してWebリンクに電話をかけさせることができます呼び出されたときに作成されます。
一部のURIはリソース(DNSホスト名やそのマシン上のパスなど)を見つけるための情報を提供しますが、一部は純粋なリソース名として使用されます。 URL は、リソースロケーターである識別子用に予約されています。これには、 http://stackoverflow.com などの「http」URLが含まれ、ホスト上の指定されたパスのWebページ。もう1つの例は、指定されたアドレスのメールボックスを識別する mailto:fred@mail.org などの「mailto」URLです。
URN は、ロケーターではなく、純粋なリソース名として使用されるURIです。たとえば、URI: mid:0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com は、「Message-Id」フィールドにそれを含む電子メールメッセージを識別するURNです。 URIは、そのメッセージを他の電子メールメッセージと区別するのに役立ちます。しかし、それ自体はどのストアでもメッセージのアドレスを提供しません。
簡単な説明:
次のことを想定します
URIはあなたの名前です
URLは、あなたと通信するためのあなたの名前を含む住所です。
-
私の名前はロヨラ
LoyolaはURI
-
私の住所はTN、チェンナイ600001です。
TN、チェンナイ600 001、ロヨラはURLです
ご理解のお願い、
今、正確な例を見てみましょう
http://www.google.com/fistpage.html
上記では、 firstpage.html というページと通信できます ( URI )次の http://www.google.com/を使用してfistpage.html ( URL )。
したがってURIはURLのサブセットですが、その逆ではありません。
これに答えるために、別の質問に修正した回答に頼ります。 URIの良い例は、Amazon S3リソースを識別する方法です。とりましょう:
s3://www-example-com/index.html
[fig。 1]
のキャッシュコピーとして作成した
http://www.example.com/index.html
[fig。 2]
Amazonの S3-US-West-2 データセンター。
StackOverflowで s3://
protocol スキームでは、リソースを検索しても効果がありません。 リソースを識別する ため、図。 1 は有効なURIです。 Amazonはバケット(URIの authority
部分の用語)がデータセンター全体で一意であることを要求しているため、有効なURNでもあります。見つけるには役立ちですが、データセンターを示すものではありません。したがって、URLとして機能しません。
では、この場合、URI、URL、URNはどのように異なりますか?
- 図。 1 はURIです
- 図。 1 はURNです
- 図。 2 はURIです
- 図。 2 はURLです
- figのURL。 1 は http:// www-example -com.s3-website-us-west-2.amazonaws.com/
- また、 http://www-example-com.s3.amazonaws。 com / index.html
- しかし http://www-example-com.s3.amazonaws.com/ (データセンターも、ファイル名もAmazon S3にとって一般的ではありません)
注: RFC 3986では、URIを scheme:// authority / path?query#fragment
URI(Uniform Resource Identifier)は、インターネットリソースを識別する文字列です。
最も一般的なURIは、インターネットドメインアドレスを識別するUniform Resource Locator(URL)です。別の、あまり一般的ではないタイプのURIは、Universal Resource Name(URN)です。
見つかった:
Uniform Resource Identifier(URI)は、全体像を表しています。 URIを分割することができます/ URIは、ロケーター(ユニフォームリソースロケーター-URL)、名前(ユニフォームリソース名-URN)、またはその両方として分類できます。基本的に、URNは人の名前のように機能し、URLはその人の住所を表します。要するに、URNはアイテムのIDを定義し、URLはそれを見つける方法を定義し、最後にこれら2つの概念をカプセル化するのがURIです
答えはあいまいです。 Javaでは、次のように頻繁に使用されます。
Uniform Resource Locator(URL)は、スキーム(http、https、ftp、newsなど)を含むインターネットリソースを識別するために使用される用語です。たとえば、 URI、URL、およびURN?
Uniform Resource Identifier(URI)を使用して、Webサーバー内の単一のドキュメントを識別します。たとえば、/ questions / 176264 / whats-the-difference-between-a-uri-and-a-url
Javaサーブレットでは、URIは頻繁にWebアプリケーションコンテキストなしでドキュメントを参照します。