【T3a】HTTPのやり取りを確かめる(3/5)
プロジェクトタイプ | ASP.NET Core (空) |
---|---|
プロジェクト名 | T3a |
ソリューション名 | PIT3 |
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については準備作業を参照せよ.
3a-3. URLのフォーマット
ここで URL について少し詳しく説明しておこう.URLそのものの役割についてはここで説明するまでもないと思われるが, これはWWWにおいて「 リソースの場所 」(≒ファイルやページなどの場所)を指し示すための文字列である.「住所」と言い換えてもよいだろう. 例えば以下のようなものである.
https://www.example.com/path/to/some/file.html?hoge=piyo&foo=bar#quux
HTTP同様,URLについても取り決めがあり,そのフォーマットは,RFC3986というインターネット標準で定められている. チュートリアル【T1a】でも少し説明したが, この文字列の各部にはきちんとした意味がある .WWWで使用される いわゆるURLは_に示すいくつかのパート(≒部品)で構成されている.
スキーム
://オーソリティ
パス
?クエリ
#フラグメント
例えば_のようなURLであれば,各パートは_のように対応する.
今回はこのうちスキーム,オーソリティ,パスの意味と役割について簡単に説明しておこう.
スキーム はWWWにおいてはアクセスする際のプロトコルを指定している.よく見かけるhttp
や,https
などは
「この『場所』にはHTTPの取り決めを使ってアクセスせよ」ということを指示している(HTTPSは
セキュリティのための仕組みであるSSL(参考)という
仕組みの上でHTTPのやり取りをする,ということを意味している).
オーソリティ とは要するに 通信先のコンピューター のことである.たとえば_の例で言えば,
オーソリティは「www.example.com
という名前のコンピューターへアクセスせよ」ということを表している.
後述するようにこの「オーソリティ」部分にもフォーマットが存在する.
パス はアクセスしようとしているリソース(≒ファイルやページなど)が通信先の コンピューター内のどこにあるのか (≒ファイルの場所),を表している.
Windowsなどでいえば "C:\Path\To\Some\File.txt"
のようなファイルパスであると理解してよい
(ただしWindowsと異なり区切り文字は/
であり,また"C:"
のようなドライブレターはない).
なお,この「ファイルの場所」は必ずしもその通信先のコンピューターが装備しているストレージの物理的なファイルシステムにおける ファイルパスである必要はない.T1aで試みたように,ファイルシステム内の特定のフォルダ(例えば wwwroot フォルダ)からの 相対パスであってもよいし,ウェブアプリケーションの場合,そのアプリケーションが理解可能ならば実際には存在しないパスであってもよい. このことは ASP.NET Core MVC (というよりもREST1の仕組み)において重要な点である.
さらに オーソリティ についてもその各部は_に示す意味を持つ.
ユーザー
@ホスト名
:ポート
ユーザー はアクセスするのにユーザー情報を必要とするような場合のものでHTTPにおいてはあまり頻繁には使用されない. ホスト名 はコンピューター名(IPアドレスやドメイン名),ポート は「そのコンピューターのどのTCPポートに接続するのか」を表している. なお,「ポート」とか「TCPポート」という用語に関しては1年次の「通信ネットワーク」や,2年次の「情報基礎実験(ネットワーク実験)」などで 学習しているはずであるのでここでの説明は省略する._にいくつかのオーソリティの例を示す.
たとえば今まで ASP.NET Core アプリケーションを動作させると http://localhost:5432/
のようなURLへのアクセスが発生していたはずであるが,
このlocalhost:5432
の部分は「 "localhost"
という名前のホスト(≒コンピューター)の5432
番ポート 」を表している.なお, "localhost"
という名前は
そのコンピューター自身を意味する特別な名前である .「ASP.NET Core ウェブアプリ」タイプのプロジェクトのデバッグ実行は,
当然のことながら Visual Studio を実行しているコンピューター内で実行されているため,http://localhost:5432/
のようなURLは
そのコンピューター自身に接続するということを表している.
また_のURLのオーソリティ部分は www.example.com
となっており,ポート番号の指定がない.
ポート番号の指定がない場合は,アクセス方法(=プロトコル)ごとのデフォルトのポートが指定されたものとみなされる
HTTPなら80番ポート , HTTPSなら443番ポート にアクセスすることが定められている2.
まずはこのURLのフォーマットを頭に入れたうえで次に進もう.
教科書「Webを支える技術」P.26~ ↩︎
このようなサービスごとに定められているデフォルトの接続先ポートのことをwell-knownポートという. ↩︎