URLとは何か
URL(Uniform Resource Locator)は、インターネット上のページ、画像、APIなどの資源がどこにあり、どの方法で取得するかを示す文字列です。ブラウザのアドレス欄に表示されるWebアドレスが代表例です。
ドメインはURLの一部分です。同じドメインでも、パスやクエリが違えば別のページや条件を表せます。
一文でいうと
URLとは、インターネット上の資源の場所と、そこへアクセスする方法を示す住所です。
MDNはURLを、インターネット上の固有の資源を指すアドレスと説明しています。実際には資源が移動したり削除されたりするため、正しい形式のURLでも常に取得できるとは限りません。
個人開発のどこで登場するか
ページへのリンク、画像の取得先、APIの接続先、認証後の戻り先、Webhookの送信先など、Web開発のさまざまな場所で登場します。
URLは利用者へ見せる文字列であると同時に、次のような運用上の識別子にもなります。
どのページを正式版として検索エンジンへ伝えるか
開発、Preview、本番のどこへ接続するか
エラーがどの経路で起きたか
外部サービスがどこへ結果を返すか
一文字違うだけで別の接続先になるため、画面名だけでなくURLそのものを確認します。
一つのURLを部品に分ける
https://example.com/articles?sort=new#top を例にします。
https:アクセス方法を示すスキームexample.com:接続先を示すドメイン名/articles:接続先の中で資源を示すパス?sort=new:条件などを渡すクエリ#top:ページ内の位置などを示すフラグメント
フラグメントは主にブラウザ側で処理され、通常はHTTPリクエストの対象へ送られません。どの部品がサーバーへ届くかを区別すると、画面遷移やエラーを調べやすくなります。
ドメインやURIと区別する
ドメイン:
example.comのような階層的な名前URL:スキーム、接続先、パスなどを含む資源の場所
URI:資源を識別する文字列を広く指す用語
リンク:別の資源へ移動できるよう、URLなどを文書や画面へ結び付けたもの
日常のWeb開発ではURLとURIが近い意味で使われる場合もあります。厳密な分類を先に暗記するより、いま扱う文字列のどの部分を変更しているかを確認します。
URLへ秘密情報を入れない
URLは、ブラウザ履歴、アクセスログ、解析ツール、参照元情報、画面共有などへ残る可能性があります。パスやクエリへ、パスワード、長期間有効なAPIキー、個人情報を直接入れないようにします。
また、URLを文字列の結合だけで作ると、空白、日本語、&、#などが別の意味として解釈される場合があります。利用する言語やライブラリのURL機能で組み立て、入力値を適切にエンコードします。外部から受け取った戻り先URLは、意図した接続先だけを許可します。
次に読む記事
URLのドメイン部分はドメインとは何か、接続先を調べる仕組みはDNSとは何かで説明します。先頭の通信方法はHTTPとは何かとHTTPSとは何かへ進みます。