Skip to content

Commit

Permalink
2024/09/25 時点の英語版に基づき更新
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Oct 22, 2024
1 parent 1ad980a commit 0827a94
Showing 1 changed file with 25 additions and 22 deletions.
47 changes: 25 additions & 22 deletions files/ja/web/http/headers/transfer-encoding/index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
---
title: Transfer-Encoding
slug: Web/HTTP/Headers/Transfer-Encoding
l10n:
sourceCommit: 5bd9fe2b25c6eee2a14d0406ce7116998fa48c13
---

{{HTTPSidebar}}

**`Transfer-Encoding`** ヘッダーは、{{Glossary("Payload body","ペイロード本文")}}をユーザーに安全に転送するために使われる符号化方式を指定します
**`Transfer-Encoding`** ヘッダーは、ネットワーク上のノード間でメッセージを転送する際に使用するエンコード方式を指定します

> **メモ:** [HTTP/2](https://wikipedia.org/wiki/HTTP/2) は HTTP 1.1 のチャンク化した転送エンコードの仕組みに対応しておらず、新規にもっと効率的な、データストリーミングの仕組みを提供しています。
> [!WARNING]
> HTTP/2 では、Transfer-Encoding ヘッダーの使用は、HTTP/2 の特定の仕様である `"trailers"` 以外はすべて禁止されています。
> HTTP/2 以降では、チャンク転送よりも効率的なデータストリーミングの仕組みを自分自身で定義しており、このヘッダーの使用は禁止されています。
> HTTP/2 でこのヘッダーを使用すると、HTTP/2 プロトコルが使用を禁止しているため、特定のプロトコルエラーが発生する可能性が高いです。
`Transfer-Encoding`[ホップバイホップヘッダー](/ja/docs/Web/HTTP/Headers#hbh)であり、リソース自体ではなく、二つのノード間のメッセージに適用されます。複数ノードコネクションのそれぞれの区間は、異なる `Transfer-Encoding` の値を使用することがあります。コネクション全体を通してデータを圧縮したい場合は、代わりにエンドトゥエンドの {{HTTPHeader("Content-Encoding")}} ヘッダーを使用してください。
`Transfer-Encoding`[ホップバイホップヘッダー](/ja/docs/Web/HTTP/Headers#ホップバイホップヘッダー)であり、リソース自体ではなく、二つのノード間のメッセージに適用されます。
ノード間のコネクションが複数ある場合は、それぞれの区間で使用する `Transfer-Encoding` の値が異なることがあります。
コネクション全体を通してデータを圧縮したい場合は、代わりにエンドトゥエンドの {{HTTPHeader("Content-Encoding")}} ヘッダーを使用してください。

本文のない {{HTTPMethod("HEAD")}} リクエストに対するレスポンスで使われたときは、対応する {{HTTPMethod("GET")}} メッセージに適用されるであろう値を示します。

Expand All @@ -18,7 +25,7 @@ slug: Web/HTTP/Headers/Transfer-Encoding
<tr>
<th scope="row">ヘッダー種別</th>
<td>
{{Glossary("Response header", "レスポンスヘッダー")}}
{{Glossary("Request header", "リクエストヘッダー")}}, {{Glossary("Response header", "レスポンスヘッダー")}}, {{Glossary("Content header", "コンテンツヘッダー")}}
</td>
</tr>
<tr>
Expand All @@ -32,57 +39,53 @@ slug: Web/HTTP/Headers/Transfer-Encoding

## 構文

```
```http
Transfer-Encoding: chunked
Transfer-Encoding: compress
Transfer-Encoding: deflate
Transfer-Encoding: gzip
Transfer-Encoding: identity
// コンマで区切って複数の値を並べることができます
// カンマで区切って複数の値を並べることができます
Transfer-Encoding: gzip, chunked
```

## ディレクティブ

- `chunked`
- : データはチャンク (塊) の連続で送られます。この場合は {{HTTPHeader("Content-Length")}} ヘッダーが省略されます。それぞれのチャンクの先頭に現在のチャンクの長さを 16 進数の形式で追加し、その後で '`\r\n`' が続き、チャンク自体ももう一つの '`\r\n`' が続きます。最後のチャンクは通常のチャンクですが、長さが 0 であるという点が異なります。この後に、一連のエンティティのヘッダーフィールド (おそらく空) から成るトレイラーが続きます。
- : データはチャンク(塊)の連続で送られます。この場合は {{HTTPHeader("Content-Length")}} ヘッダーが省略されます。それぞれのチャンクの先頭に現在のチャンクの長さを 16 進数の形式で追加し、その後で `\r\n` が続き、チャンク自体ももう一つの `\r\n` が続きます。
最後のチャンクは通常のチャンクですが、長さが 0 であるという点が異なります。この後に、一連のエンティティのヘッダーフィールド(おそらく空)から成るトレイラーが続きます。
- `compress`
- : [Lempel-Ziv-Welch](http://en.wikipedia.org/wiki/LZW) (LZW) アルゴリズムを使用した形式です。この値の名前はこのアルゴリズムを実装している UNIX の _compress_ プログラムから採られました。
特許問題 (2003 年に期限切れ) の影響もあり、多くの UNIX ディストリビューションから compress プログラムが消滅したように、今日ではこのコンテンツ符号化方式を使用しているブラウザーはほとんどありません。
- : [Lempel-Ziv-Welch](https://en.wikipedia.org/wiki/LZW) (LZW) アルゴリズムを使用した形式です。この値の名前はこのアルゴリズムを実装している UNIX の _compress_ プログラムから採られました。
特許問題2003 年に期限切れの影響もあり、多くの UNIX ディストリビューションから compress プログラムが消滅したように、今日ではこのコンテンツ符号化方式を使用しているブラウザーはほとんどありません。
- `deflate`
- : [zlib](http://en.wikipedia.org/wiki/Zlib) 構造体 ([RFC 1950](http://tools.ietf.org/html/rfc1950) で定義) [_deflate_](http://en.wikipedia.org/wiki/DEFLATE) 圧縮アルゴリズム ([RFC 1951](http://tools.ietf.org/html/rfc1952) で定義) を使用します。
- : [zlib](https://en.wikipedia.org/wiki/Zlib) 構造体[RFC 1950](https://datatracker.ietf.org/doc/html/rfc1950) で定義[_deflate_](https://en.wikipedia.org/wiki/DEFLATE) 圧縮アルゴリズム[RFC 1951](https://datatracker.ietf.org/doc/html/rfc1952) で定義を使用します。
- `gzip`
- : [Lempel-Ziv coding](http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77) (LZ77) と 32 ビット CRC を使用する形式です。これは元は UNIX の _gzip_ プログラムの形式です。 HTTP/1.1 標準は、互換性のために、このコンテンツ符号化方式の別名として`x-gzip` を解釈することにサーバーが対応することを推奨しています。
- `identity`
- : 恒等写像 (つまり、圧縮なし、変更なし) であることを示します。このトークンは、特に明示された場合は、常に受け付けられるとみなされます
- : [Lempel-Ziv coding](http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77) (LZ77) と 32 ビット CRC を使用する形式です。
これは元は UNIX の _gzip_ プログラムの形式です。
HTTP/1.1 標準は、互換性のために、このコンテンツ符号化方式の別名として`x-gzip` を解釈することにサーバーが対応することを推奨しています

##

### チャンク化の符号化

チャンク化の符号化は、大量のデータをクライアントに送り、リクエストが完了するまでレスポンスの合計の長さが分からない場合に便利です。例えば、巨大な HTML の表をデータベースのクエリの結果として作成したり、大きな画像を転送したりする場合などです。チャンク化されたレスポンスは以下のようになります。

```
```http
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
7\r\n
Mozilla\r\n
9\r\n
Developer\r\n
7\r\n
Network\r\n
11\r\n
Developer Network\r\n
0\r\n
\r\n
```

## 仕様書

| 仕様書 | 題名 |
| --------------------------------------------- | ------------------------------------------------------------------ |
| {{RFC("7230", "Transfer-Encoding", "3.3.1")}} | Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing |
{{Specifications}}

## ブラウザーの互換性

Expand Down

0 comments on commit 0827a94

Please sign in to comment.