URLとは
URL(Uniform Resource Locator/ユニフォーム・リソース・ロケーター)は、インターネット上の資源の場所と取得方法を示す文字列で、Webではアドレスとして使われます。Webページだけでなく、画像、動画、APIの接続先などもURLで示せます。
URL全体を一つの名前として読むのではなく、通信方法、接続先、接続先の中の場所、追加条件へ分けると意味が見えます。とくに安全確認では、パス中の会社名よりドメイン名を正確に読むことが重要です。
https://shop.example.jp:443/items/42?color=blue#details
スキーム利用する方法
ホスト接続先
ポート接続先の受付口
パス資源の場所
クエリ検索・絞り込みなどの条件
フラグメント資源内の位置
URLを構成する部分
- スキーム
https、http、fileなど、URLをどの仕組みで扱うかを示します。WebではHTTPSが一般的です。- ホスト
shop.example.jpの部分です。Webではドメイン名やIPアドレスが使われ、接続先を決める中心になります。- ポート
- 同じホスト上のどのサービスへ接続するかを示すポート番号です。スキームの既定値を使う場合は省略できます。
- パス
/items/42のように、接続先の中で求める資源を示します。見た目がフォルダー名でも、実際の保存構造と一致するとは限りません。- クエリ
?以降で、検索語、並び順、ページ番号などの追加情報を渡します。形式と意味は接続先のサービスが決めます。- フラグメント
#以降で、同じ文書内の見出しなど、資源の中の位置を示します。Webブラウザでは通常、サーバーへ送らずブラウザ側で利用します。
URLを開くときの流れ
絶対URLと相対URL
https://example.jp/guide/start/のようにスキームとホストを含む形は、単独で接続先を決められる絶対URLです。../images/map.pngや/contact/のように一部を省いた形は、基準となるURLと組み合わせて解釈する相対URLです。
同じ相対URLでも、どのページを基準にするかで完成するURLが変わる場合があります。ローカルのHTMLファイルを直接開いたときと、Webサーバー上へアップロードしたときにCSSや画像の参照結果が変わるのは、基準URLや先頭の/の扱いが異なるためです。
URLとドメイン名の違い
ドメイン名はURLの一部分です。たとえばhttps://support.example.jp/account/reset?lang=jaでは、ドメインに関係するホスト部分はsupport.example.jpです。それより後ろのexample.jp.evil.exampleのような文字列は別のドメイン階層として読む必要があります。
URLが長い場合でも、最初にスキーム、その次に/が二つ続いた後のホストを探します。ログインや支払いを行う前には、見覚えのある単語が含まれるかではなく、実際のドメイン名が正しいかを確認します。
クエリへ入れた情報はURLに残る
クエリはアドレス欄、閲覧履歴、ブックマーク、アクセスログ、共有した文字列などへ残る可能性があります。パスワード、秘密鍵、本人確認番号など、漏れてはいけない情報をURLへ含める設計は避けます。
HTTPSはURLのパスやクエリを通信途中から読み取りにくくしますが、接続先のサーバー自身には要求として届きます。端末画面や履歴から見えなくなるわけでもありません。
仕様の確認資料:WHATWG「URL Standard」、RFC 3986