• 検索結果がありません。

中継を行うコンピュータ (プロクシサーバなど)

ドキュメント内 コンテントネゴシエーション (ページ 30-53)

キャッシュの保存と利用

Webブラウザ

Webサーバ プロクシサーバ

リソースA リクエストを

発行

レスポンスを 返却 キャッシュに

保存 キャッシュに

保存

キャッシュの保存と利用

Webブラウザ

Webブラウザ

Webサーバ プロクシサーバ

リソースA Webブラウザの

キャッシュを利用

プロクシサーバの

キャッシュを利用

サーバが返す情報

• キャッシュしてもよいか。

• リソースの有効期間。

• リソースの最終更新日時。

• リソースの特定のバージョンを表す、

エンティティタグと呼ばれる文字列。

条件付きGET

• リソースがある日時以降に更新されていれば、

そのリソースを送り返す。

更新されていなければ、ステータスコード 304 ( Not Modified )を返す。

• リソースがあるエンティティタグを持っていな ければ、そのリソースを送り返す。

エンティティタグが同じであれば、ステータス

コード 304 を返す。

Cache-Control ヘッダ

Cache-Control: no-store

フィールド値 意味

no-store

キャッシュしてはいけない

Cache-Control ヘッダ

Cache-Control: no-store Cache-Control: no-cache

フィールド値 意味

no-store

キャッシュしてはいけない

no-cache

キャッシュしてもよいが、再利用するため には、有効性の確認が必要

Cache-Control ヘッダ

Cache-Control: no-store Cache-Control: no-cache

Cache-Control: max-age=86400

フィールド値 意味

no-store

キャッシュしてはいけない

no-cache

キャッシュしてもよいが、再利用するため には、有効性の確認が必要

max-age= x

キャッシュが有効である期間(秒)

Last-Modified ヘッダ

Last-Modified: Sat, 05 Oct 2013 06:00:00 GMT

Etag ヘッダ

Etag: "abcde"

条件付きGET

• 最終更新日時を条件にする場合

⋯ If-Modified-Since ヘッダ

• エンティティタグを条件にする場合

⋯ If-None-Match ヘッダ

条件付きGET

リクエスト GET /doc HTTP/1.1

レスポンス HTTP/1.1 200 OK

Cache-Control: max-age=86400

Last-Modified: Sat, 05 Oct 2013 06:00:00 GMT Etag: "abcde"

Content-Type: text/html

リクエスト GET /doc HTTP/1.1

If-Modified-Since: Sat, 05 Oct 2013 06:00:00 GMT

レスポンス HTTP/1.1 304 Not Modified

Etag: "abcde"

GET /doc HTTP/1.1

If-Modified-Since: Sat, 05 Oct 2013 06:00:00 GMT

条件付きGET

リクエスト GET /doc HTTP/1.1

レスポンス HTTP/1.1 200 OK

Cache-Control: max-age=86400

Last-Modified: Sat, 05 Oct 2013 06:00:00 GMT Etag: "abcde"

Content-Type: text/html

リクエスト GET /doc HTTP/1.1

If-None-Match: "abcde"

レスポンス HTTP/1.1 304 Not Modified

Etag: "abcde"

条件付きGET

リクエスト

レスポンス HTTP/1.1 200 OK

Last-Modified: Mon, 07 Oct 2013 10:16:10 GMT Etag: "vwxyz"

Content-Type: text/html GET /doc HTTP/1.1

If-Modified-Since: Sat, 05 Oct 2013 06:00:00 GMT

If-None-Match: "abcde"

HTTP認証

Basic認証の動作例

Basic認証

Basic認証

リクエスト レスポンス

GET /secret HTTP/1.1 Host: www.example.ac.jp

HTTP/1.1 401 Unauthorized

WWW-Authenticate: Basic realm="example.ac.jp secret space"

Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>401 Unauthorized</title>

(

以下略

)

Basic認証

Basic認証

Basic認証

リクエスト

レスポンス

GET /secret HTTP/1.1 Host: www.example.ac.jp

Authorization: Basic bW9yaW1vdG86YWJjZDEyMzQ=

HTTP/1.1 401 Unauthorized

WWW-Authenticate: Basic realm="example.ac.jp secret space"

Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>401 Unauthorized</title>

(

以下略

)

Basic認証

Basic認証

Basic認証

リクエスト

レスポンス

GET /secret HTTP/1.1 Host: www.example.ac.jp

Authorization: Basic bW9yaW1vdG86Y29ycmVjdHB3

ドキュメント内 コンテントネゴシエーション (ページ 30-53)

関連したドキュメント