HTTP (Hypertext Transfer Protocol)とは、HTMLなどのテキストファイルや画像の送受信に用いられる通信プロトコルである。
HTTPSは単独の通信プロトコルではなく、SSL/TLSによって提供されるセキュア(安全)な接続の上でHTTPを使うことをHTTPS (HTTP over SSL/TLS) と読んでいる。
階層 | 通信プロトコル |
---|---|
アプリケーション層 | HTTP |
SSL/TLS | |
トランスポート層 | TCP |
HTTPの仕様ではURLの長さに制限は無い。ただし、WebブラウザやWebサーバの制限がある。
Google ChromeやFirefoxなどのモダンブラウザではURLのサイズは最大32,000文字である。Microsoft Internet ExplorerではURLのサイズは最大2,083文字である。
Apache HTTPサーバではLimitRequestLineディレクティブでHTTPリクエスト行のサイズを制限している。(初期値は8,190)
HTTP応答は応答状態、HTTPヘッダ及びデータ本体の3つから構成される。
HTTPステータスコードとは、HTTPリクエストに対する応答の状態を示す。HTTPレスポンスの1行目にあり、HTTPバージョン、ステータスコード及びメッセージから構成される。HTTPステータスコードは3桁の数字で表される。
HTTPステータスコードの例を示す。
HTTP/1.1 200 OK
分類 | ステータスコード | 状態 |
---|---|---|
情報 | 100 Continue | 継続 |
101 Switching Protocols | プロトコル切り替え | |
102 Processing | 処理中 | |
成功 | 200 OK | リクエストが成功して、レスポンスが返される。 |
201 Created | リクエストが成功し、リソースの作成が完了した。 | |
202 Accepted | 受理 | |
203 Non-Authoritative Information | 信頼できない情報 | |
204 No Content | 内容なし。 | |
205 Reset Content | 内容のリセット。 | |
206 Partial Content | 部分的な内容。 | |
207 Multi-Status | 複数のステータス | |
208 Already Reported | 既に報告。 | |
226 IM Used | IM使用 | |
リダイレクション | 300 Multiple Choices | 複数の選択。 |
301 Moved Permanently | リソースは恒久的に移動した。 | |
302 Found | 発見。 | |
303 See Other | 他を参照。 | |
304 Not Modified | 文書が変更されていない。 | |
305 Use Proxy | プロキシを使用。 | |
307 Temporary Redirect | 一時的リダイレクト。 | |
308 Permanent Redirect | 恒久的リダイレクト | |
クライアントエラー | 401 Unauthorized | ユーザ認証が必要である。 |
402 Payment Required | 支払いが必要である。 | |
403 Forbidden | アクセスが禁止されている。 | |
404 Not Found | リソースが見つからない。 | |
405 Method Not Allowed | 許可されていないメソッド | |
406 Not Acceptable | 受理できない。 | |
407 Proxy Authentication Required | プロキシ認証が必要である。 | |
408 Request Timeout | リクエストが時間内に完了しない。 | |
409 Conflict | 競合 | |
410 Gone | 消滅した。 | |
411 Length Required | 長さが必要。 | |
412 Precondition Failed | 前提条件で失敗した。 | |
413 Payload Too Large | ペイロードが大きすぎる。 | |
414 URI Too Long | URIが長すぎる。 | |
415 Unsupported Media Type | サポートされていないメディアタイプ。 | |
416 Range Not Satisfiable | 範囲外にある。 | |
417 Expectation Failed | Expectヘッダによる拡張が失敗。 | |
421 Misdirected Request | 誤ったリクエスト。 | |
422 Unprocessable Entity | 処理できないエンティティ。 | |
423 Locked | ロックされている。 | |
424 Failed Dependency | 依存関係で失敗。 | |
426 Upgrade Required | アップグレード要求。 | |
451 Unavailable For Legal Reasons | 法的理由により利用不可。 | |
サーバエラー | 500 Internal Server Error | サーバ内部エラー |
501 Not Implemented | 実装されていない。 | |
502 Bad Gateway | 不正なゲートウェイ | |
503 Service Unavailable | サービスを利用できない | |
504 Gateway Timeout | ゲートウェイタイムアウト。 | |
505 HTTP Version Not Supported | サポートされていないHTTPバージョン。 | |
507 Insufficient Storage | 容量不足。 | |
508 Loop Detected | ループを検出した。 | |
509 Bandwidth Limit Exceeded | 帯域幅の制限を超過した。 | |
510 Not Extended | 拡張できない。 |
「201 Created」はリソース作成の操作(PUT又はGET)に対する応答で、リクエストが成功してリソースの作成が完了したことを表すHTTPステータスコードである。新たに作成されたリソースはレスポンスメッセージの本文で返され、その位置はリクエストURLまたはLocationヘッダのコンテンツとなる。
502(不正なゲートウェイ)ステータス・コードは、サーバがゲートウェイまたはプロキシとして動作しているときに、要求を実行しようとしてアクセスしたインバウンド・サーバーから無効な応答を受信したことを示す。
503(サービスを利用できない)ステータス・コードは、一時的な過負荷またはスケジュールされた保守のために、サーバが現在要求を処理できないことを示す。この状態は、ある程度の遅延の後に軽減される可能性がある。
項目 | 説明 |
---|---|
Cache-Control | キャッシュに関する指示 |
Connection | キープアライブ |
Content-Length | コンテンツの長さ(バイト) |
Content-Type | コンテンツの種別 |
Cookie | クッキーをHTTPサーバへ送信する。 |
Date | 応答を返した時刻 |
Last-Modified | エンティティが最後に更新された時刻 |
Location | エンティティの場所が移動したときなど、ブラウザが要求したURLとは別のURLに転送されたとき、そのURL |
Pragma | その他の情報 |
Referer | 要求元のURL |
項目 | 説明 |
---|---|
Access-Control-Allow-Origin | CORS (Cross-Origin Resource Sharing) でアクセスを許可するドメインを指定する。 |
Accept-Ranges | Range要求において使用可能な単位 |
Age | エンティティが生成されてからの予測経過時間(秒) |
Cache-Control | キャッシュに関する指示 |
Connection | キープアライブ |
Content-Disposition | コンテンツがインラインか添付ファイルかを示す。 |
Content-Length | コンテンツの長さ(バイト) |
Content-Security-Policy | IMG要素、SCRIPT要素及びLINK要素などの読み込み先を制限する。 |
Content-Type | コンテンツの種別 |
Date | 応答を返した時刻 |
Last-Modified | エンティティが最後に更新された時刻 |
Location | エンティティの場所が移動したときなど、ブラウザが要求したURLとは別のURLに転送されたとき、そのURL |
Policy-Key-Pins | SSL証明書が偽造されたものでないかチェックする。 |
Pragma | その他の情報 |
Server | サーバ情報 |
Set-Cookie | クッキーをHTTPクライアントへ送信する。 |
Strict-Transport-Security | HTTPSでのアクセスを強制する。 |
X-Content-Type-Options | nosniffの場合、Internet ExplorerのContent Sniffingを無効にする。 Content Sniffingとは、Content-Typeでメディアタイプが指定されていても、 それを無視してコンテンツの内容や拡張子からデータ形式を推定する機能である。 IEのContent Sniffingは、画像やJSONなどをHTMLと誤判定することがある。 |
X-Frame-Options | denyの場合、ページをフレーム内に表示できない。 sameoriginの場合、自分と生成元が同じフレーム内に限り、ページを表示できる。 allow-from urlの場合、指定された生成もとに限り、ページをフレーム内に表示できる。 |
X-Px | CDNetworks独自のHTTPヘッダ |
X-XSS-Protection | 1の場合、ウェブブラウザのクロスサイトスクリプティング(XSS)検証・防御機能を有効にする。 0の場合、XSS検証・防御機能を無効にする。 |
Content-Dispositionとは、コンテンツがインライン(ウェブページまたはウェブページの一部としてブラウザに表示される)か添付ファイル(ダウンロードしてローカルに保存する)かを示すHTTP応答ヘッダである。
HTTP応答ヘッダに「Content-Disposition: attachment」が付加されているかどうかによって、Internet Explorer 11(Internet Explorer 9以降)でファイルをダウンロードするときに表示される画面が異なる。
COMで開けるファイル | COMで開けないファイル | |
---|---|---|
attachmentあり | 通知バー | 通知バー |
attachmentなし | ダウンロードダイアログ | 通知バー |
COM (Componet Object Model)で開けるファイルには、Officeのドキュメント(Word文書、Excelワークブック、PowerPointプレゼンテーション)やWindows Explorerで開けるアーカイブ(*.zipや*.cab)などがある。
インラインの場合
Content-Disposition: inline
添付ファイルの場合
Content-Disposition: attachment
添付ファイルかつファイル名を指定する場合
Content-Disposition: attachment; filename="filename"
ダウンロード時のデフォルトのファイル名。日本語のファイル名の場合は、URLエンコードする必要がある。
リソースのメディアタイプを示すのに用いられる。
Content-Type: media-type; charset=charset
リソースのMIMEタイプ
文字コードのキャラクタセット
Content-Type: text/html; charset=utf-8
HTTP/2の「:authority」疑似ヘッダー・フィールドには、ターゲットURIのauthority部分が含まれる。
:authority: segakuin.com
:method: GET
:path: /network/http.html
:scheme: https
IETF (1999) RFC2616 Hypertext Transfer Protocol -- HTTP/1.1
IETF (2011) RFC6265 HTTP State Management Mechanism
IETF (2014) RFC7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
IETF (2015) RFC7540 Hypertext Transfer Protocol Version 2 (HTTP/2)