PHP用語集 |
HTTP
WWWブラウザーとWebサーバーの間でHyperText Markup Language (HTML) などのコンテンツをやり取りする際に用いられる通信プロトコル。
関連用語
IT用語辞典バイナリ |
HTTP
読み方:エイチティーティーピー
別名:ハイパーテキスト転送プロトコル
HTTPとは、WWW(World Wide Web)において、サーバー(Webサーバー)とクライアント(Webブラウザ)が、HTML文書をはじめとした各種情報をやり取りするために利用する通信プロトコルのことである。
HTTPは、TCP上でパケット単位で情報のやりとりを行う。その特徴は、基本的にステートレスな通信であり、一つの要求(リクエスト)に対し、一つの応答(レスポンス)で完結するというシンプルさにある。リクエストを受けたWebサーバーは、HTMLで記述された文書ファイルやHTMLによって関連付けられたマルチメディアデータなどをクライアントに転送する。Webブラウザは、受信したデータを解析し、レンダリングを行って、整理されたHTML文書として画面に表示する。
HTTPにおけるデータは、制御情報を持つHTTPヘッダ部と、コンテンツデータを含むHTTPボディ部からなる単純な構造をしている。転送可能な情報の種類には、特に制限がない。
HTTPにSSL(Secure Sockets Layer)の暗号化を施し、セキュリティ性を向上させたプロトコルとして、HTTPSがある。ちなみに、HTTPのポート番号はデフォルトでは80番であり、HTTPSのポート番号はデフォルトで443番となっている。
HTTPは、ファイル伝送に利用されるFTPや、電子メールのやりとりに用いられるSMTPなどと並び、インターネット上で最も頻繁に利用されるプロトコルの一種となっている。
HTTP1.1において、HTTP要求で指定されるHTTPメソッドには、GET、POST、PUT、HEAD、DELETE、CONNECT、OPTIONS、TRACEなどがある。それぞれの意味は、GETは、相手サーバーからクライアントへのファイル伝送要求、POSTは、クライアントから相手サーバーへのデータ送信要求(HTTPボディ部を用いる)、PUTは、クライアントから相手先サーバーへのファイルのアップロード要求、HEADは、相手先サーバーのファイル更新情報の問い合わせ要求、DELETEは、相手先サーバーのファイルの削除要求、CONNECTは、プロキシの指定要求、OPTIONSは、利用可能なオプションの問い合わせ要求である。
Web上での典型的な利用の仕方としては、おおむね以下の通りである。まず、ユーザーは、Webブラウザ上で参照先ドキュメントのURL(Uniform Resource Locator)を指定する。URLは「http://server.mydomain.jp/dir/document.html」のような形をしている。「http」は、プロトコルの種類(暗号化通信の場合は、httpsとなる)、「server.mydomain.jp」は、接続先ドメイン名を意味する。Webブラウザは、ドメイン名をDNSに問い合わせ、IPアドレスを得て80番ポートに接続する。接続が成功すると、相手先のサーバーに対して、1行目に「GET /dir/document.html HTTP/1.0」のようなデータを持つ、HTTPヘッダ部を持つHTTP要求パケットを送信する。この1行をリクエスト行と呼ぶ。ここで「GET」は、HTTPメソッドの一つで、ファイルの伝送を要求するものである。次の「/dir/document.html」は伝送要求する文書名で、サーバー上の論理的なパス名で指定する(物理的なパス名と一致するとは限らない)。最後の「HTTP/1.0」は利用するHTTPプロトコルのバージョンを指定している。この要求を受信した相手先のWebサーバーは、「HTTP/1.0 200 OK」のような行(レスポンス行)を含むHTTPレスポンスを返す。ここで、「HTTP/1.0」は、HTTPプロトコルのバージョン、「200」はステータス番号で200は正常の意味である。異常の場合は200番以外の数値が返る。「OK」は、補足メッセージで、エラー時には付加的な情報を返す。要求された文書データは、HTTPレスポンスのHTTPボディ部で伝送される。ヘッダ部とボディ部の区切りは、空行1行で指定される。
PHP関数リファレンス |
HTTP
HTTP の URL、日付、リダイレクト、ヘッダおよびメッセージを 使いやすくし、クライアントの希望する言語および文字セットの ネゴシエーション手段を提供します。 また、任意のデータを送信する際にキャッシュやリジュームの機能を もたせることができます。
CURL サポート込みでビルドされている場合は、 強力なリクエスト機能を提供します。PHP 5 以降では、 複数のリクエストを平行して実行することができます。
このマニュアルでは、API リファレンスに加えて インストールや設定の方法、定義済みのグローバル定数などを 以下の節で説明しています。
| インストール |
| 設定 |
| グローバル定数 |
目次
- インストール — HTTP 拡張モジュールのインストールおよび設定
- 設定 — http モジュールの設定ディレクティブ
- 定数 — 定義済みの http モジュールの定数
- HttpMessage — HTTP メッセージクラス
- HttpMessage::__construct — HttpMessage のコンストラクタ
- HttpMessage::fromString — 文字列から HttpMessage を作成する
- HttpMessage::toString — 文字列表現を取得する
- HttpMessage::toMessageTypeObject — メッセージの型に応じた HTTP オブジェクトを作成する
- HttpMessage::guessContentType — content type を推測する
- HttpMessage::detach — HttpMessage をデタッチする
- HttpMessage::prepend — メッセージを先頭に追加する
- HttpMessage::reverse — メッセージチェインを逆順にする
- HttpMessage::send — メッセージを送信する
- HttpMessage::getParentMessage — 親メッセージを取得する
- HttpMessage::getType — メッセージの型を取得する
- HttpMessage::setType — メッセージの型を設定する
- HttpMessage::getHttpVersion — HTTP バージョンを取得する
- HttpMessage::setHttpVersion — HTTP バージョンを設定する
- HttpMessage::getHeaders — メッセージのヘッダを取得する
- HttpMessage::getHeader — ヘッダを取得する
- HttpMessage::addHeaders — ヘッダを追加する
- HttpMessage::setHeaders — ヘッダを設定する
- HttpMessage::getBody — メッセージの本文を取得する
- HttpMessage::setBody — メッセージの本文を設定する
- HttpMessage::getRequestMethod — リクエストメソッドを取得する
- HttpMessage::setRequestMethod — リクエストメソッドを設定する
- HttpMessage::getRequestUrl — リクエスト URL を取得する
- HttpMessage::setRequestUrl — リクエスト URL を設定する
- HttpMessage::getResponseCode — レスポンスコードを取得する
- HttpMessage::setResponseCode — レスポンスコードを設定する
- HttpMessage::getResponseStatus — レスポンスのステータスを取得する
- HttpMessage::setResponseStatus — レスポンスのステータスを設定する
- HttpQueryString — HTTP クエリ文字列クラス
- HttpQueryString::__construct — HttpQueryString のコンストラクタ
- HttpQueryString::singleton — HttpQueryString のシングルトン
- HttpQueryString::get — クエリ文字列 (の一部) を取得する
- HttpQueryString::mod — クエリ文字列の複製を変更する
- HttpQueryString::set — クエリ文字列パラメータを設定する
- HttpQueryString::toArray — クエリ文字列を配列で取得する
- HttpQueryString::toString — クエリ文字列を取得する
- HttpQueryString::xlate — クエリ文字列の文字セットを変更する
- HttpDeflateStream — HTTP 圧縮ストリームクラス
- HttpDeflateStream::__construct — HttpDeflateStream クラスのコンストラクタ
- HttpDeflateStream::update — 圧縮ストリームを更新する
- HttpDeflateStream::flush — 圧縮ストリームをフラッシュする
- HttpDeflateStream::finish — 圧縮ストリームを終了する
- HttpInflateStream — HTTP 展開ストリーム
- HttpInflateStream::__construct — HttpInflateStream クラスのコンストラクタ
- HttpInflateStream::update — 展開ストリームを更新する
- HttpInflateStream::flush — 展開ストリームをフラッシュする
- HttpInflateStream::finish — 展開ストリームを終了する
- HttpRequest — HTTP リクエストクラス
- HttpRequest::addCookies — クッキーを追加する
- HttpRequest::addHeaders — ヘッダを追加する
- HttpRequest::addPostFields — POST フィールドを追加する
- HttpRequest::addPostFile — POST ファイルを追加する
- HttpRequest::addPutData — PUT データを追加する
- HttpRequest::addQueryData — クエリデータを追加する
- HttpRequest::addRawPostData — 生の POST データを追加する
- HttpRequest::addSslOptions — SSL オプションを追加する
- HttpRequest::clearHistory — 履歴を消去する
- HttpRequest::__construct — HttpRequest のコンストラクタ
- HttpRequest::enableCookies — クッキーを有効にする
- HttpRequest::getContentType — content type を取得する
- HttpRequest::getCookies — クッキーを取得する
- HttpRequest::getHeaders — ヘッダを取得する
- HttpRequest::getHistory — 履歴を取得する
- HttpRequest::getMethod — メソッドを取得する
- HttpRequest::getOptions — オプションを取得する
- HttpRequest::getPostFields — POST フィールドを取得する
- HttpRequest::getPostFiles — POST ファイルを取得する
- HttpRequest::getPutData — PUT データを取得する
- HttpRequest::getPutFile — PUT ファイルを取得する
- HttpRequest::getQueryData — クエリデータを取得する
- HttpRequest::getRawPostData — 生の POST データを取得する
- HttpRequest::getRawRequestMessage — 名前のリクエストメッセージを取得する
- HttpRequest::getRawResponseMessage — 生のレスポンスメッセージを取得する
- HttpRequest::getRequestMessage — リクエストメッセージを取得する
- HttpRequest::getResponseBody — レスポンスの本文を取得する
- HttpRequest::getResponseCode — レスポンスコードを取得する
- HttpRequest::getResponseCookies — レスポンスのクッキーを取得する
- HttpRequest::getResponseData — レスポンスデータを取得する
- HttpRequest::getResponseHeader — レスポンスヘッダを取得する
- HttpRequest::getResponseInfo — レスポンスの情報を取得する
- HttpRequest::getResponseMessage — レスポンスメッセージを取得する
- HttpRequest::getResponseStatus — レスポンスのステータスを取得する
- HttpRequest::getSslOptions — ssl オプションを取得する
- HttpRequest::getUrl — url を取得する
- HttpRequest::resetCookies — クッキーをリセットする
- HttpRequest::send — リクエストを送信する
- HttpRequest::setContentType — content type を設定する
- HttpRequest::setCookies — クッキーを設定する
- HttpRequest::setHeaders — ヘッダを設定する
- HttpRequest::setMethod — メソッドを設定する
- HttpRequest::setOptions — オプションを設定する
- HttpRequest::setPostFields — POST フィールドを設定する
- HttpRequest::setPostFiles — POST ファイルを設定する
- HttpRequest::setPutData — PUT データを設定する
- HttpRequest::setPutFile — PUT ファイルを設定する
- HttpRequest::setQueryData — クエリデータを設定する
- HttpRequest::setRawPostData — 生の POST データを設定する
- HttpRequest::setSslOptions — SSL オプションを設定する
- HttpRequest::setUrl — URL を設定する
- HttpRequestPool — HTTP リクエストプールクラス
- HttpRequestPool::attach — HttpRequest をアタッチする
- HttpRequestPool::__construct — HttpRequestPool のコンストラクタ
- HttpRequestPool::__destruct — HttpRequestPool のデストラクタ
- HttpRequestPool::detach — HttpRequest をデタッチする
- HttpRequestPool::getAttachedRequests — アタッチされているリクエストを取得する
- HttpRequestPool::getFinishedRequests — 終了したリクエストを取得する
- HttpRequestPool::reset — リクエストプールをリセットする
- HttpRequestPool::send — すべてのリクエストを送信する
- HttpRequestPool::socketPerform — ソケットアクションを実行する
- HttpRequestPool::socketSelect — ソケットの選択を実行する
- HttpResponse — HTTP レスポンスクラス
- HttpResponse::capture — スクリプトの出力を取り込む
- HttpResponse::getBufferSize — バッファサイズを取得する
- HttpResponse::getCacheControl — cache control を取得する
- HttpResponse::getCache — キャッシュを取得する
- HttpResponse::getContentDisposition — content disposition を取得する
- HttpResponse::getContentType — content type を取得する
- HttpResponse::getData — データを取得する
- HttpResponse::getETag — ETag を取得する
- HttpResponse::getFile — ファイルを取得する
- HttpResponse::getGzip — gzip を取得する
- HttpResponse::getHeader — ヘッダを取得する
- HttpResponse::getLastModified — 最終更新日時を取得する
- HttpResponse::getStream — ストリームを取得する
- HttpResponse::getThrottleDelay — throttle delay を取得する
- HttpResponse::guessContentType — content type を推測する
- HttpResponse::send — レスポンスを送信する
- HttpResponse::setBufferSize — バッファサイズを設定する
- HttpResponse::setCacheControl — cache control を設定する
- HttpResponse::setCache — キャッシュを設定する
- HttpResponse::setContentDisposition — content disposition を設定する
- HttpResponse::setContentType — content type を設定する
- HttpResponse::setData — データを設定する
- HttpResponse::setETag — ETag を設定する
- HttpResponse::setFile — ファイルを設定する
- HttpResponse::setGzip — gzip を設定する
- HttpResponse::setHeader — ヘッダを設定する
- HttpResponse::setLastModified — 最終更新日時を設定する
- HttpResponse::setStream — ストリームを設定する
- HttpResponse::setThrottleDelay — throttle delay を設定する
- http_cache_etag — ETag でキャッシュする
- http_cache_last_modified — 最終更新日時でキャッシュする
- http_chunked_decode — chunked-encoded データをデコードする
- http_deflate — データを圧縮する
- http_inflate — データを展開する
- http_get_request_body_stream — リクエストの本文をストリームとして取得する
- http_get_request_body — リクエストの本文を文字列として取得する
- http_get_request_headers — リクエストヘッダを配列として取得する
- http_date — HTTP の RFC に準拠した日付を作成する
- http_support — 組み込みの HTTP サポートを調べる
- http_match_etag — ETag を比較する
- http_match_modified — 最終更新日時を比較する
- http_match_request_header — 任意のヘッダを比較する
- http_build_cookie — クッキー文字列を作成する
- http_negotiate_charset — クライアントが希望している文字セットを選択する
- http_negotiate_ctype — クライアントが希望している content type を選択する
- http_negotiate_language — クライアントが希望している言語を選択する
- ob_deflatehandler — 圧縮出力ハンドラ
- ob_etaghandler — ETag 出力ハンドラ
- ob_inflatehandler — 展開出力ハンドラ
- http_parse_cookie — HTTP クッキーをパースする
- http_parse_headers — HTTP ヘッダをパースする
- http_parse_message — HTTP メッセージをパースする
- http_parse_params — パラメータリストをパースする
- http_get — GET リクエストを実行する
- http_head — HEAD リクエストを実行する
- http_post_data — エンコードされたデータを使用して POST リクエストを実行する
- http_post_fields — エンコードされる前のデータを使用して POST リクエストを実行する
- http_put_data — データを使用して PUT リクエストを実行する
- http_put_file — ファイルを使用して PUT リクエストを実行する
- http_put_stream — ストリームを使用して PUT リクエストを実行する
- http_request_method_exists — リクエストメソッドが存在するかどうかを調べる
- http_request_method_name — リクエストメソッド名を取得する
- http_request_method_register — リクエストメソッドを登録する
- http_request_method_unregister — リクエストメソッドの登録を解除する
- http_request — 独自のリクエストを実行する
- http_request_body_encode — リクエスト本文をエンコードする
- http_redirect — HTTP リダイレクトを発行する
- http_send_content_disposition — Content-Disposition を送信する
- http_send_content_type — Content-Type を送信する
- http_send_data — 任意のデータを送信する
- http_send_file — ファイルを送信する
- http_send_last_modified — Last-Modified を送信する
- http_send_status — ステータスを送信する
- http_send_stream — ストリームを送信する
- http_throttle — HTTP 抑止処理
- http_build_str — クエリ文字列を組み立てる
- http_build_url — URL を組み立てる
ウィキペディア |
Hypertext Transfer Protocol
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2009/12/18 17:28 UTC 版)
(HTTP から転送)
| OSI参照モデル |
| アプリケーション層 |
| CMIP · DHCP (DHCPv4 · DHCPv6) · DNS · EHRP · FTP · Gopher · GTP · HTTP · IMAP4 · IRC · NNTP · NTP · POP3 · RTCP · RTSP · SDP · SIP · SMTP · SNMP · SOAP · SSH · STUN · TELNET · XMPP |
| プレゼンテーション層 |
| HTML · XML · AFP |
| セッション層 |
| SSL/TLS · RPC |
| トランスポート層 |
| DCCP · IGMP · PPTP · RSVP · RTP · RUDP · SCTP · TCP · UDP · UDP-Lite |
| ネットワーク層 |
| ARP · BGP · ICMP · ICMPv6 · IGP · IP (IPv4 · IPv6) · IPsec · IS-IS · OSPF · RARP · RIP |
| データリンク層 |
| 802.11 · 802.16 · ATM · DTM · EVDO · FDDI · GPRS · HDLC · HSPA · ISDN · L2TP · PPP · SLIP · SMDS · Wi-Fi · WiMAX · アークネット · イーサネット · トークンリング · フレームリレー |
| 物理層 |
| G.709 · OFDM · PLC · SONET/SDH · イーサネット物理層 · ツイストペアケーブル · 同軸ケーブル · 光ファイバー · モデム |
HyperText Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル、略称 HTTP)とは、WebブラウザとWebサーバの間でHTMLなどのコンテンツ送受信に用いられる通信プロトコルであり、RFC 2616で規定されている。ハイパーテキスト転送プロトコルとも呼ばれる。
目次 |
概要
HTTP は HTML (HyperText Markup Language) や XML (Extensible Markup Language) によって記述されたハイパーテキストを転送することを主な目的としているが、転送する内容はハイパーテキストに限らず画像、音声などのバイナリデータも含め様々なデータを送ることができる。
HTTP はリクエスト-レスポンス型のプロトコルである。すなわち、クライアントがサーバにリクエストメッセージを送信し、サーバがこれにレスポンスメッセージを返す。レスポンスメッセージを返した時点で基本的にサーバは初期状態に戻る。つまり、サーバがクライアントの状態を保存しない。HTTP においてはトランスポート・プロトコルとして通常TCPを使用する。
World Wide WebにおけるWebページなどの資源は、Uniform Resource Identifierによって指定される。HTTP を使用して資源にアクセスするときは、http: が先頭についた URL を使用する。URL の例をあげる。
http://www.example.co.jp/~test/samples/index.html
最初、HTTP/0.9ではURLのみの簡単なやりとりであったが、HTTP/1.0でNNTPやSMTPのような各種ヘッダが定義され、HTTP cookieなどの利用が可能になった。 HTTP/1.1では複数データを転送するためのキープアライブ(keep-alive)機能やプロキシなどの利用も想定された仕様になった。
このほかの点を箇条書きで示す。
- ポート番号80をデフォルトとして使用する。
- SSL(TLS)で暗号化され、セキュリティを確保したHTTPは、HTTPSと呼ばれる。(httpsは実際にはURIスキームの1つであり、実際のプロトコルにはHTTP over SSL/TLSが用いられる。
- HTTP は基本的にサーバが状態保持しない (stateless) プロトコルだが、データベースなどを使用する Webアプリケーションにおいては状態保持が必要だったため、そのためにいわゆる Cookie とよばれる機構が Netscape Communications Corporation によって導入された。Cookie を使用することによって状態を管理し、"セッション" を維持することが可能になる。
- HTTPの拡張プロトコルとしてWebDAVがある。
- UPnPでは、HTTPをUDP上で使用するHTTPUや、マルチキャストで使用するHTTPMUが規定された。
例
下にもっとも単純な、クライアントとサーバ(www.google.co.jp:80)とのHTTPプロトコルのやり取りの例を挙げる。
クライアントのリクエスト:
GET / HTTP/1.0
サーバのレスポンス:
HTTP/1.0 200 OK Cache-Control: private Content-Type: text/html Set-Cookie: PREF=ID=72c1ca72230dea65:LD=ja:TM=1113132863:LM=1113132863:S=nNO7MIp W2o7Cqeu_; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.co.jp Server: GWS/2.1 Date: Sun, 10 Apr 2005 11:34:23 GMT Connection: Close <html><head><meta http-equiv="content-type" content="text/html; charset=Shift_JI S"><title>Google</title><style><!-- ・・・以下省略
上のリクエストのGETにあたる部分をメソッドといい、 HTTP/1.0では、GET, HEAD, PUT, POST, DELETE, LINK, UNLINK、 HTTP/1.1ではさらに、OPTIONS, TRACEがある。 GETメソッドのレスポンスにはヘッダ情報のあとに改行が挟まれ、コンテンツ本体が送られる。 HEADメソッドのレスポンスにはコンテンツサイズや更新日時などの情報を含むヘッダのみが送られる。
また、リクエストの2行目以降はヘッダーを送る。
ヘッダの各要素は
フィールド名: 内容
のペアで構成される。
ブラウザの情報を表すUser-Agent、使用候補言語を表すAccept-Language、他ページへのリンクを辿った場合にそのリンク元ページのURLを表すRefererなどが代表的なフィールドである。
なお、リクエスト時のHostヘッダーはHTTP/1.1では必須であるが、HTTP/1.0では無くても良い。 但し、サーバがバーチャルホストを利用している場合は、Hostヘッダが無いとリソース取得に失敗するので、たとえHTTP/1.0を使用していてもHostヘッダを付加しなければならない。
関連項目
- HTTPステータスコード
- FTP
- WebDAV
- Webサーバ
- ウェブブラウザ
- アプリケーションサーバ
- REST
- HTTPヘッダ・インジェクション
- Hyper Text Coffee Pot Control Protocol
- バーチャルホスト
外部リンク
- RFC 2818 - HTTP Over TLS
- RFC 2817 - Upgrading to TLS Within HTTP/1.1
- RFC 2616 - HTTP/1.1
- RFC 2068 - HTTP/1.1(初版,RFC 2616 によって obsolete)
- TS X 0085:2004 - ハイパテキスト転送プロトコル HTTP/1.1 標準仕様書(TS)
- RFC 1945 - HTTP/1.0
- HttpTea Freeware HTTP Logger
- Studying HTTP
- HTTPヘッダーを知っていますか?INSIGHT NOW!
関連した本
- 3分間HTTP&メールプロトコル基礎講座 網野 衛二 技術評論社
- VBAによるTCP/IPプログラミング入門―HTTP,SMTP,POP3,FTPの基本がわかる (TCP・IP基礎シリーズ) 志村 康人 CQ出版
- HTTP & Web (基礎から身につくネットワーク技術シリーズ) 日経BP社

