URL を構成する要素

厳密にはそうでなくても、「ドメインを購入した」、「画像は別のサイトでホストされています」などと言えば、ほとんどの場合は問題ありません。ただし、状況によっては、より正確であることが必要になります。たとえば Cookie を扱う場合、siteorigin の違いを理解する必要があります。

URL パーツの名前は標準で指定され、JavaScript API も定義されています。

  • URL 標準は、エンジニアが相互運用可能なウェブブラウザを構築できるように、URL と関連概念を定義しています。
  • 標準の URL API コンポーネントは、スキームオリジンなど、URL 文字列の一部へのアクセスを提供するメソッドを定義しています。

このドキュメントでは、HTTP または HTTPS の URL 文字列で使用されるさまざまな用語について説明します。ファイルやデータの URL など、他の種類の URL については説明しません。hostorigin などの用語については、本質的に正確な定義は複雑であるため、このドキュメントでは、完全な説明を追求するのではなく、例と URL 標準のリンクを紹介します。

JavaScript を使用して、URL API で定義された URL コンポーネントの名前を取得できます。次に例を示します。

let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);

URL アナライザ

以下の URL を編集して、URL 文字列の各部分に名前を付けてください。 url-parts.glitch.me で別のタブで開くこともできます。


URL 部分の名前はアルファベット順です。

国別コード トップレベル ドメイン(ccTLD)

ISO 3166-1 国コードのリストで定義されているトップレベル ドメイン

  • https://example.org.au の場合、ccTLD は au です。
  • https://example.io の場合、ccTLD は io です。

ドメイン名

ドットで区切られた HTTP または HTTPS URL の部分: スキームの後、パスまたはポート(指定されている場合)の前の部分です。ドメイン名の各部分はラベルと呼ばれます。

URL ドメイン名
https://example.github.io/path example.github.io
https://support.example.org.au:443 support.example.org.au

有効なトップレベル ドメイン(eTLD)

公開サフィックス リストのエントリ。その下に TLD や(複数の部分からなる eTLD の場合は)追加ドメイン(第 2 レベル、第 3 レベルなど)が含まれます。

  • 例: comcom.augithub.iosa.edu.auschools.nsw.edu.au

以下の例のような「パブリック サフィックス」は、ドメインを登録できる名前です。パブリック サフィックス リストは、既知のすべてのパブリック サフィックスのリストであり、頻繁に更新されます。ChromiumFirefox などのブラウザのビルドでは、このリストが使用されます。

eTLD+1

登録可能なドメインをご覧ください。

eTLD とその前のサブドメイン。

  • 例: example.comexample.org.auexample.github.ioexample.sa.edu.auexample.schools.nsw.edu.au

ファイル名

URL 標準では定義されておらず、URL API でも定義されていませんが、URL がディレクトリ構造に直接マッピングされるという仮定に基づき、通常は URL の最終的なパス以外の部分を参照するために使用されます。

たとえば、https://example.com/dir/file.html では、file.html はファイル名と呼ばれることがあります。

ファイル名の値は、アセットがダウンロードされた場合にブラウザでもアセットに名前を付けるために使用されます。たとえば、https://example.com/images/image.jpg は通常、ローカルの image.jpg に保存されます。

Fragment

URL 末尾の # 文字の後に続く文字列で、フラグメント識別子を提供します。

  • たとえば、URL https://example.com/cats#tabby のフラグメント識別子の値は tabby です。

# を含む部分は、ハッシュまたはアンカーと呼ばれます。テキスト フラグメントにリンクしてハイライト表示することもできます。

ハッシュはフラグメントではなく URL API から返されます。

完全修飾ドメイン名(FQDN)

IP アドレスにマッピングされる、ウェブサイトまたはサーバーの完全なアドレス。

URL FQDN
https://example.com:1234/cats example.com
https://api.example.github.io api.example.github.io

デフォルト以外のポートが使用されていても、URL の FQDN にポートは含まれません。

ハッシュ(またはアンカー)

URL 末尾の # 文字の後に続く文字列で、フラグメント識別子を指定します(コンテキストによっては「アンカー」と呼ばれます)。

# を除く部分は、フラグメントと呼ばれます。テキスト フラグメントにリンクしてハイライト表示することもできます。

ハッシュはフラグメントではなく URL API から返されます。

ホスト

URL 標準で定義されているように、ホストにはドメイン名、IP v4 アドレス、IPv6 アドレス、不透明ホスト、または空のホストを指定できます。

  • URL 標準の host の定義にポートは含まれていません。
  • ポートがスキームのデフォルトである場合を除き、URL.host にはポートが含まれます。
  • URL.hostname にはポートが含まれません。
URL URL.host
https://www.example.com:443/cat www.example.com
// 443 is the default port for the scheme
https://www.example.com:1234/cat www.example.com:1234
https://cat.example.github.io cat.example.github.io

ホスト名

ホスト名は JavaScript URL API で定義されますが、URL 標準では他の場所では定義されません。詳しくは、ホスト表現をご覧ください。

URL.hostname は、ポートなしで host を返します。

URL URL.hostname
https://www.example.com:443/cat www.example.com
https://www.example.com:1234/cat www.example.com
https://cat.example.github.io cat.example.github.io

起源

URL 標準では origin を定義し、背景については HTML 標準にリンクしています。

HTTP または HTTPS URL の場合、URL.originスキームホストポートを返します(ポートがスキームのデフォルトである場合を除く)。

URL URL.origin
https://www.example.com:443/cat https://www.example.com
https://www.example.com:1234/cat https://www.example.com:1234
https://cat.example.github.io https://cat.example.github.io

パラメータ

検索パラメータをご覧ください。

パスワード

username をご覧ください。

パス名

HTTP または HTTPS URL の場合、ドメインとポートの後の部分(定義されている場合)。ファイル名(定義されている場合)は含まれますが、検索文字列またはハッシュは含まれません。

URL URL.pathname
https://example.com [empty string]
https://example.com:8000/search?q=tabby /search
https://example.github.io/cat/pattern#tabby /cat/pattern
https://example.github.io/README.md /README.md

「Path」は、ファイル名を付けずにパス名を示すために使用されることがあります。たとえば、URL が https://example.com/cat/pattern/tabby.html の場合、「パス」は /cat/pattern です。

ポート

ネットワーク ポートを識別する URL の : の後に続く番号。たとえば、URL が https://example.com:1234/tabby の場合、ポート番号は 1234 です。

ポート番号は 16 ビットの符号なし整数(0 ~ 65535 の整数)にする必要があります。

HTTP URL のデフォルト ポートは 80、HTTPS のデフォルト ポートは 443 です。デフォルト以外のポートを使用する場合を除き、URL でポート番号を指定する必要はありません。

ポートがスキームのデフォルトである場合、API は空の文字列を返します。

URL URL.port
https://example.com // empty string
https://example.com:443/foo // empty string: port is default for scheme
https://www.example.com:1234/foo 1234

プロトコル

スキームとそれに続く :(例: http:https:)。

protocol は URL API から使用できますが、scheme は使用できません。

クエリ(または「クエリ文字列」)

URL の検索部分(先頭の ? を除く)。

登録可能なドメイン

  • comorgTLD に対応する eTLD)などの単一パートの eTLD を含む URL の場合、ドメインとその前のセカンド レベル ドメイン(例: example.comexample.org)を指定します。
  • 第 3 レベルの登録のみが許可される 2 部構成の eTLD を持つ URL(com.augithub.io などの公開サフィックス リストのエントリ)の場合、2 部構成のトップレベル ドメイン(「パブリック サフィックス」)とその直前の第 3 レベル ドメイン名が含まれます。たとえば、example.org.auexample.github.io です。
  • 3 つ以上の部分からなる eTLD の場合は、eTLD とその前のドメインが必要です。

Scheme

URL に対してリクエストが行われたときにネットワーク プロトコル(またはユーザー エージェントによって実行されるアクション)を定義する、URL の一部(:// の前)。たとえば、https スキームの URL へのリクエストは、HTTPS プロトコルを使用して行う必要があります。filemailtogit などのスキームがネットワーク プロトコルに対応しない URL へのリクエストの場合、動作はユーザー エージェントによって異なります。たとえば、ユーザーが mailto リンクをクリックすると、ほとんどのブラウザではリンクの href URL の値を使用してデフォルトのメール アプリケーションが開きます。

疑問符の後に、パス名の後に指定されたパラメータとその値を表す一連の Key-Value ペアが続きます。

URL URL.search
https://example.com/cats?pattern=tabby&mood=bonkers ?pattern=tabby&mood=bonkers
https://example.com/cats:443?pattern=tabby ?pattern=tabby

query または「クエリ文字列」は、先頭に ? を付けない search を指します。

検索パラメータもご覧ください。

パラメータを検索

検索文字列(または「クエリ文字列」)で渡されるデータ項目を参照します。

  • たとえば https://example.com/cats?pattern=tabby&mood=bonkers の場合、検索文字列には pattern=tabbymood=bonkers の 2 つのパラメータがあります。

第 2 レベルのドメイン

トップレベル ドメインの前にあるドメイン。

  • URL https://www.example.com の場合、セカンドレベル ドメインは example.com(トップレベル ドメイン com のサブドメイン)です。

  • https://example.org.au の場合、トップレベル ドメインは au、第 2 レベル ドメインは org、第 3 レベル ドメインは example です。この例では、org.auau のサブドメインで、example.org.auorg.au のサブドメインです。

サイト

サイトは、HTML 標準で定義されており、スキームを含む same-siteスキームのない same-site があります。

サイトが URL 標準または JavaScript URL API で定義されていません。

このコンテキストでは、次のようになります。

  • https://example.com のような単一部分の eTLD を持つ HTTP または HTTPS URL の場合、サイトは scheme、eTLD、ラベルで構成されます。たとえば、URL が https://www.example.com/cat の場合、サイトは https://example.com です。(この URL では、eTLD はトップレベル ドメインと同じです)。
  • co.ukgithub.iosa.edu.au などのマルチパート eTLD の場合、「サイト」はその前の schemeeTLDラベルで構成されます。たとえば、URL が https://cat.example.co.uk/tabby の場合、サイトは https://example.co.ukhttps://www.education.sa.gov.au のサイトは https://education.sa.gov.au です。
URL サイト(スキームと eTLD +1 を使用)
https://cat.example.com/tabby (「https」、「example.com」)
https://cat.example.co.uk/tabby (「https」、「example.co.uk」)

origin とは異なり、site には port が含まれていません。

サブドメイン

上位レベルのドメイン内のドメイン。

トップレベル ドメインが comorg のように 1 つの部分で構成されるサイトの場合、トップレベル ドメインの前の部分はドットで区切られます。

  • www.example.comexample.com のサブドメインです。
  • support.api.example.org は、example.org のサブドメインである api.example.org のサブドメインです。

第 3 レベルの登録のみが許可されている 2 部構成の eTLD の場合(co.ukgithub.io などの公開サフィックス リストのエントリ)、サブドメインはその前のドメイン名の一部です。

  • たとえば、cat.example.co.ukexample.co.uk のサブドメインです。

テキスト フラグメント

ページ内のテキストの範囲にリンクしたり、ハイライト表示したりできるフラグメントの一種。ユーザーがテキスト フラグメントを含むリンクをたどると、ブラウザはページ内のテキストを見つけてスクロールし、ハイライト表示しようとします。

テキスト フラグメントは :~:text= で始まり、その後に検索キーワードが続きます。

たとえば、このページの「フラグメント」というテキストが最初に出現する場所にリンクするには、URL https://web.dev/articles/url-parts#:~:text=fragment を使用します。

詳しくは、テキスト フラグメントをご覧ください。

トップレベル ドメイン(TLD)

ルートゾーン データベースに表示されているドメイン名(comorg など)。一部のトップレベル ドメインは、uktv などの国コード トップレベル ドメインです。

HTTP URL または HTTPS URL の部分を説明する場合、TLD は最後のドットに続くドメイン名です。

  • https://example.org の場合、URL のトップレベル ドメインは org です。
  • https://example.org.au の場合、URL のトップレベル ドメインは au で、orgセカンドレベル ドメインです(org もトップレベル ドメインですが)。org.au は 2 部構成の eTLD です。

eTLDパブリック サフィックス リストには 1 つまたは 2 つ以上の部分を持つドメインが含まれるため、TLD も eTLD になります。次に例を示します。

  • https://example.com の場合、URL の eTLD は TLD でもある com です。

ユーザー名

URL の先頭にオプションのユーザー名とパスワードを指定できますが、これはセキュリティ上の理由から非推奨となり、多くの場合に無視されます。

たとえば、https://user123:password1@example.com の場合、ユーザー名は user123 です。ユーザー名とパスワードは書式なしテキストで、暗号化されていないことに注意してください。ユーザー名に : 記号または @ 記号が含まれている場合は、それぞれ %3A%40 に URL エンコードする必要があります。


補足説明