「Hypertext Transfer Protocol」の版間の差分

提供: セキュリティ
移動: 案内検索
 
(同じ利用者による、間の7版が非表示)
行1: 行1:
 
+
[[Hypertext Transfer Protocol]]([[Hypertext Transfer Protocol|HTTP]])とは、[[Webサーバ]]とクライアント([[ウェブブラウザ]])が通信するときに使う[[通信プロトコル]]です。[[HyperText Markup Language|HTML]]文書や文書に関連付けられた画像、音声、動画などを含めてやり取りできます。
[[Hypertext Transfer Protocol]]([[Hypertext Transfer Protocol|HTTP]])とは、[[Webサーバ]]とクライアント([[ブラウザ]])が通信するときに使う[[通信プロトコル]]です。[[HyperText Markup Language|HTML]]文書や文書に関連付けられた画像、音声、動画などを含めてやり取りできます。
+
  
 
'''読み方'''
 
'''読み方'''
行9: 行8:
  
 
== 概要 ==
 
== 概要 ==
[[HyperText Markup Language|HTML]] や [[XML]] で記述された[[ハイパーテキスト]]の転送を主な目的としています。テキスト以外に、バイナリ形式のデータも扱えます。
+
[[HyperText Markup Language|HTML]] や XML で記述されたハイパーテキストの転送を主な目的としています。テキスト以外に、バイナリ形式のデータも扱えます。
  
 
トランスポートプロトコルとして、[[TCP]]を利用します。
 
トランスポートプロトコルとして、[[TCP]]を利用します。
 
HTTPは、サーバ/クライアントモデルで、リクエストレスポンス型のプロトコルです。
 
HTTPは、サーバ/クライアントモデルで、リクエストレスポンス型のプロトコルです。
  
[[World Wide Web]] におけるWebページのリソースは、[[Uniform Resource Identifier]]によって指定します。
+
World Wide Web におけるWebページのリソースは、Uniform Resource Identifier(URI)によって指定します。
 
HTTP を使用してリソースにアクセスする場合には、 http: を先頭につけた [[Uniform Resource Locator|URL]] を使用します。
 
HTTP を使用してリソースにアクセスする場合には、 http: を先頭につけた [[Uniform Resource Locator|URL]] を使用します。
  
行21: 行20:
 
[[HTTP]] の 規格には、以下のバージョンがあります。
 
[[HTTP]] の 規格には、以下のバージョンがあります。
  
* HTTP/1.0 [[RFC]] 1945
+
* HTTP/1.0 RFC 1945
* HTTP/1.1 [[RFC]] 2616
+
* HTTP/1.1 RFC 2616
* [[HTTP 2.0|HTTP/2.0]] ドラフト
+
* [[HTTP/2]] ドラフト
  
 
主な仕様を以下に示します。
 
主な仕様を以下に示します。
行29: 行28:
 
* デフォルトでは、[[ポート番号]] 80 を使います。
 
* デフォルトでは、[[ポート番号]] 80 を使います。
 
* ステートレスな[[プロトコル]]です。
 
* ステートレスな[[プロトコル]]です。
* ステートレスな[[プロトコル]]であるため、[[Cookie]]を利用してセッションを維持できます。
+
* ステートレスな[[プロトコル]]であるため、[[HTTP Cookie]]を利用してセッションを維持できます。
 
* [[プロキシ]]を利用できます。
 
* [[プロキシ]]を利用できます。
 
 
== HTTPプロトコル ==
 
== HTTPプロトコル ==
 
HTTP/1.0 で index.html を取得する場合には、以下のリクエストを送信します。
 
HTTP/1.0 で index.html を取得する場合には、以下のリクエストを送信します。
行39: 行37:
 
  GET /index.html HTTP/1.1
 
  GET /index.html HTTP/1.1
 
  Host: foo.com
 
  Host: foo.com
+
 
 
== メソッド ==
 
== メソッド ==
 
{| class="wikitable"
 
{| class="wikitable"
行89: 行87:
  
 
== HTTPのリクエストとレスポンス ==
 
== HTTPのリクエストとレスポンス ==
* [[HTTPリクエスト]]
+
* HTTPリクエスト
 
: [[ウェブブラウザ]](Webクライアント) などから[[Webサーバー]]へのリクエストをいいます。
 
: [[ウェブブラウザ]](Webクライアント) などから[[Webサーバー]]へのリクエストをいいます。
** [[HTTPリクエストヘッダー]]
+
** HTTPリクエストヘッダー
 
* [[HTTPレスポンス]]
 
* [[HTTPレスポンス]]
 
: [[Webサーバ]]から[[ウェブブラウザ]](Webクライアント)などへのレスポンスです。
 
: [[Webサーバ]]から[[ウェブブラウザ]](Webクライアント)などへのレスポンスです。
** [[HTTPレスポンスヘッダー]]
+
** HTTPレスポンスヘッダー
 
** [[HTTPステータスコード]]
 
** [[HTTPステータスコード]]
 
* [[HTTP cookie]]
 
* [[HTTP cookie]]
行108: 行106:
  
 
=== リクエストヘッダ ===
 
=== リクエストヘッダ ===
* [[HTTPリクエストヘッダー]]
+
* HTTPリクエストヘッダー
 
+
 
=== レスポンスヘッダ ===
 
=== レスポンスヘッダ ===
* [[HTTPレスポンスヘッダー]]
+
* HTTPレスポンスヘッダー
 
+
 
== セキュリティ ==
 
== セキュリティ ==
=== 脆弱性対策 ===
+
=== ポリシー ===
 +
* [[同一生成元ポリシー]]
 +
=== 攻撃 ===
 +
* [[コンテンツスニッフィング]]
 +
* [[MIMEスニッフィング]]
 +
=== 脆弱性対策 セキュリティヘッダ ===
 
* [[有効なセキュリティに関するHTTPヘッダ]]
 
* [[有効なセキュリティに関するHTTPヘッダ]]
 +
** [[Strict-Transport-Security]]
 +
** [[X-Frame-Options]]
 +
** [[X-XSS-Protection]]
 +
** [[X-Content-Type-Options]]
 +
** [[X-Content-Security-Policy]]
 +
=== SSL/TLS ===
 +
* [[HTTPS]]
 +
** [[Transport Layer Security]] ([[Transport Layer Security|TLS]])
 +
** [[Secure Sockets Layer]] ([[Transport Layer Security|SSL]])
 +
** [[SPDY]]
  
 
=== 認証 ===
 
=== 認証 ===
 
==== Basic認証 ====
 
==== Basic認証 ====
[[HTTP/1.1]]では、[[Basic認証]]が定義されています。
+
HTTP/1.1では、[[Basic認証]]が定義されています。
 
単純な認証機能を提供します。
 
単純な認証機能を提供します。
 
 
==== Digest認証 ====
 
==== Digest認証 ====
 
[[Digest認証]]は、[[Basic認証]]を発展した認証機能を提供します。
 
[[Digest認証]]は、[[Basic認証]]を発展した認証機能を提供します。
 
 
== インストール ==
 
== インストール ==
 
* [[Apache HTTP Server]]
 
* [[Apache HTTP Server]]
 
 
== 使い方 ==
 
== 使い方 ==
 
* [[Apache HTTP Server]]
 
* [[Apache HTTP Server]]
 
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[Apache HTTP Server]]
 
* [[Apache HTTP Server]]
 
{{http}}
 
{{http}}
<!-- vim: filetype=mediawiki -->
+
=== 関連技術 ===
 +
* [[Base64]]
 +
* [[TCP]]
 +
 
 +
* [[ウェブブラウザ]]
 +
* [[Webサーバ]]
 +
* [[HyperText Markup Language]] ([[HTML]])
 +
 
 +
* XMLHttpRequest
 +
* XMLHttpRequest Level 2 (XHR2)
 +
* Ajax
 +
* [[JavaScript]]
 +
* PHP
 +
* Perl
 +
<!-- vim: filetype=mediawiki
 +
-->

2015年9月22日 (火) 00:58時点における最新版

Hypertext Transfer Protocol(HTTP)とは、Webサーバとクライアント(ウェブブラウザ)が通信するときに使う通信プロトコルです。HTML文書や文書に関連付けられた画像、音声、動画などを含めてやり取りできます。

読み方

Hypertext Transfer Protocol
はいぱーてきすと とらんすふぁー ぷろとこる
HTTP
えいちてぃーてぃーぴー

概要

HTML や XML で記述されたハイパーテキストの転送を主な目的としています。テキスト以外に、バイナリ形式のデータも扱えます。

トランスポートプロトコルとして、TCPを利用します。 HTTPは、サーバ/クライアントモデルで、リクエストレスポンス型のプロトコルです。

World Wide Web におけるWebページのリソースは、Uniform Resource Identifier(URI)によって指定します。 HTTP を使用してリソースにアクセスする場合には、 http: を先頭につけた URL を使用します。

http://www.example.co.jp/index.html

HTTP の 規格には、以下のバージョンがあります。

主な仕様を以下に示します。

HTTPプロトコル

HTTP/1.0 で index.html を取得する場合には、以下のリクエストを送信します。

GET /index.html HTTP/1.0

HTTP/1.1 で index.html を取得する場合には、以下のリクエストを送信します。

GET /index.html HTTP/1.1
Host: foo.com

メソッド

メソッド HTTP/0.9 HTTP/1.0 HTTP/1.1
GET o o o
POST o o
PUT o
HEAD o o
DELETE o
OPTION o
TRACE o
CONNECT o

HTTPのリクエストとレスポンス

  • HTTPリクエスト
ウェブブラウザ(Webクライアント) などからWebサーバーへのリクエストをいいます。
Webサーバからウェブブラウザ(Webクライアント)などへのレスポンスです。

HTTPヘッダフィールド

ヘッダの各要素は、フィールド名と内容で構成されます。

フィールド名: 内容

例えば、Host ヘッダは、以下のように表します。

Host: foo.com

リクエストヘッダ

  • HTTPリクエストヘッダー

レスポンスヘッダ

  • HTTPレスポンスヘッダー

セキュリティ

ポリシー

攻撃

脆弱性対策 セキュリティヘッダ

SSL/TLS

認証

Basic認証

HTTP/1.1では、Basic認証が定義されています。 単純な認証機能を提供します。

Digest認証

Digest認証は、Basic認証を発展した認証機能を提供します。

インストール

使い方

関連項目

関連技術

  • XMLHttpRequest
  • XMLHttpRequest Level 2 (XHR2)
  • Ajax
  • JavaScript
  • PHP
  • Perl