[8] application/octet-stream
は、任意のバイナリ(二進)・データを表すMIME型です。
すなわち、 application/octet-stream
と札付けされた実体の本体は何らかの意味を持つ
(あるいは持たない) 任意のビット列です。
[9] MIME の媒体型の仕組みの中では、この媒体型はやや特殊な位置付けです。
text/*
や
multipart/*
以外の媒体型は、
もし実装がその具体的な媒体型を知らなければ、
application/octet-stream
と同じように扱います。
また、実装が知っている媒体型であっても、知らない CTE で転送符号化されているときには、やはり
application/octet-stream
として扱うことになっています。
つまり、 application/octet-stream
は最も基本的な媒体型と言うことができます。
[37] たとえば、 application/x-foobar という媒体型を知らない MIME UA は、 aplication/x-foobar
の実体を application/octet-stream
の実体と同じように処理します。
[38] このMIME型は、対象となるデータのファイル形式が明確でない時や、 明確にしたくない時 (例えばWebブラウザーにファイルを解釈させず、 ダウンロードさせたい時) に使われることがあります。
[24] MIME型 application/octet-stream
は、
任意のバイナリーデータを表します >>23, >>32。
[36] 「オクテット列」 (= バイト列) という名前に反して、 実は任意のビット列を扱えます。 8ビット単位になっている必要はありません。
[48]
application/octetstream
とされることがありますが、
誤りです。
application/octet-stream
の引数[19] 何らかのバイナリデータがあり、そのMIME型が分からない場合や、
敢えて MIME型を明確にせずに扱いたい時に、 application/octet-stream
を使います。
text/plain
を使う実装もありますが、
不適切です。[10] MIME UA が application/octet-stream
の実体を受取った時に、これをどう処理するかは、
他のほとんどの媒体型同様に、実装依存です。
しかしながら、未知のバイナリ・データなのですから、 直接表示しないで利用者の指示を仰ぐか、 バイナリ・エディタの類のように十六進数などで表示するのが望ましいでしょう。 実際ほとんどの実装はそのように扱います。
[30] 実装は、受信したデータを (CTE を復号してから) ファイルに保存することを提示したり >>23, >>32、 利用者が指定した処理への入力として使ったり >>23 することが推奨されています。
[31] 危険な入力を与えられる可能性があるので、
Content-Type:
の引数から任意のプログラムを決定して実行するような実装とはしないことを強く推奨されています >>23。
[43] MIME Sniffing も参照。
type
引数#✎[25] type
引数は、
バイナリーデータの一般的な型や種別を表します
>>23。
[26] これは自動処理のためのものではなく、人間受信者に対する情報として使うことが想定されています >>23。
[29] この引数の値は特に規定されておらず、任意の値を記述できるようです。
[27] 次のような値が見られます。
Content-Type: application/octet-stream; type=tar+gzip
[21] application/*
、Content-Disposition: attachment
、
download
属性も参照。
[33] 未知の charset
の未知の text/*
部分型は、 application/octet-stream
として扱われるべきです。
text/*
参照。[34] multipart/*
や text/*
を除き、各最上位型の未知のMIME型は、
application/octet-stream
として扱われるべきです。
The "octet-stream" subtype is used to indicate that a body contains arbitrary binary data. The set of currently defined parameters is:
"octet-stream" 亜型は本文が任意のバイナリ・データであることを 示すのに使います。現在定義されているパラメーターの集合は、 次の通りです。
(1) TYPE -- the general type or category of binary data. This is intended as information for the human recipient rather than for any automatic processing.
TYPE バイナリ・データの一般的な型や分類。これは自動処理ではなく 人間受信者向けの情報を意図しています。
(2) PADDING -- the number of bits of padding that were appended to the bit-stream comprising the actual contents to produce the enclosed 8bit byte-oriented data. This is useful for enclosing a bit-stream in a body when the total number of bits is not a multiple of 8.
PADDING 実際の内容のビット列を8ビット・バイト指向のデータに するために付け足した埋めビットの数。これはビットの合計数が8の倍数 でないビット列を本文に包むのに便利です。
訳注: RFC 1521 によると取りうる値は "0" 〜 "7" です。 application/*媒体型参照。 RFC 2046 にこの規定はありませんが、 常識的に考えてこの範囲でしょう。 (これより大きな値を受け取った時は どうしましょうか?)
Both of these parameters are optional.
両パラメーターとも省略可能です。
An additional parameter, "CONVERSIONS", was defined in RFC 1341 but has since been removed. RFC 1341 also defined the use of a "NAME" parameter which gave a suggested file name to be used if the data were to be written to a file. This has been deprecated in anticipation of a separate Content-Disposition header field, to be defined in a subsequent RFC.
追加のパラメーター "CONVERSIONS" が RFC 1341 で定義されていましたが 削除されました。 RFC 1341 はデータをファイルに書くときに 使われるファイル名を提案する "NAME" パラメーターの使用も 定義していました。これは後の RFC で定義される別の Content-Disposition 頭領域を使うことを期待するものです。
The recommended action for an implementation that receives an "application/octet-stream" entity is to simply offer to put the data in a file, with any Content-Transfer-Encoding undone, or perhaps to use it as input to a user-specified process.
"application/octet-stream" 実体を受け取った実装の推奨される動作は、 Content-Transfer-Encoding を戻して、単にデータをファイルに入れるか または利用者の指定する処理の入力として使うかです。
To reduce the danger of transmitting rogue programs, it is strongly recommended that implementations NOT implement a path-search mechanism whereby an arbitrary program named in the Content-Type parameter (e.g., an "interpreter=" parameter) is found and executed using the message body as input.
浮浪プログラムの転送の危険を減らすため、実装は Content-Type パラメーター (例えば "interpreter=" パラメーター) で指名された任意のプログラム があればメッセージ本文を入力に使って実行する経路検索機構を 実装しないことを強く推奨します。
・・・
NAME -- a suggested name for the binary data if stored as a file.
NAME バイナリ・データがファイルとして保管される時の名前の提案。
・・・
CONVERSIONS -- the set of operations that have been performed on the data before putting it in the mail (and before any Content-Transfer-Encoding that might have been applied). If multiple conversions have occurred, they must be separated by commas and specified in the order they were applied -- that is, the leftmost conversion must have occurred first, and conversions are undone from right to left. Note that NO conversion values are defined by this document. Any conversion values that that do not begin with "X-" must be preceded by a published specification and by registration with IANA, as described in Appendix F.
CONVERSIONS データをメイルに入れる前 (で Content-Transfer-Encoding が適応されたかもしれない前) に施された処理の集合 複数の変換があった場合は、 読点(comma)で区切って施された順に指定します。つまり左端の変換が 最初に行われたもので無くてはならず、逆変換は右から左へと戻していきます。 この文書では変換値は定義しません。 "X-" で始まらない変換値 は予め仕様書を出版して IANA に附属書 F で説明する通り登録する 必要があります。
・・・
The values for these attributes are left undefined at present, but may require specification in the future. An example of a common (though UNIX-specific) usage might be:
これらの属性の値は現時点で未定義のままですが、将来規定する必要がある かもしれません。共通な (UNIX 特有だけど) 例は、次の通りです。
Content-Type: application/octet-stream; name=foo.tar.Z; type=tar; conversions="x-encrypt,x-compress"
However, it should be noted that the use of such conversions is explicitly discouraged due to a lack of portability and standardization. The use of uuencode is particularly discouraged, in favor of the Content-Transfer-Encoding mechanism, which is both more standardized and more portable across mail boundaries.
ですが、このような変換の使用は移植性と標準化を欠いているので、 明白に非推奨であることに注意して下さい。 uuencode の使用は特に非推奨です。 より標準化されているしよりメイル境界を越えて移植性がある Content-Transfer-Encoding 機構があります。
・・・
Web 開発
conversions
引数を使っています。値は x-CBF_CANONICAL
と x-CBF_PACKED
。name
引数の意味で file
引数を使っています。ファイルをダウンロードさせたいときは application/octet-stream
を使えばいい
と言うのはいろいろな意味で間違いであり、気持ち悪い。 (1) ダウンロード ≠ 保存。 (2) application/octet-stream
は保存と言う意味でもダウンロードという意味でもない。 Content-Type
欄などはあくまで実体本体の媒体型を記述するべきであって、受信者の動作を記述するべきではない。 (MIME や HTTP では他に内容の記述形式を表す方法がないと言うのに、動作の表現に使ってどうするのさ。) (受信者の動作の指針を与えるためには Content-Disposition
を使うのが正しい。)[11] W3C のサイトの tar+gz な資源、
なぜか application/octet-stream
になってます。ブラウザで展開ソフトウェアに関連付けることができないので不便。なんとかしてほしいなあ。
Content-Type: application/octet-stream; type=gzip
One special type is 'application/octet-stream'. If the Printer
object supports this value, the Printer object MUST be capable of
auto-sensing the format of the document data using an
implementation-dependent method that examines some number of octets
of the document data, either as part of the create operation and/or
at document processing time.
IIS で、拡張子を持たないファイルが見つかると、Content-Type が application/octet-stream としてブラウザへ送り返されます。この動作はユーザー インターフェイスでは変更できません。AOL Netscape ブラウザでは、このヘッダー設定が原因でファイルが表示されず、代わりにファイルのダウンロードが開始されます。
[40] それ自体は妥当な仕様だと思いますが、こういう説明になっているのは、
application/octet-stream
のとき IE が sniffing
する仕様だったため、 IE ではWebブラウザー内で表示され、 Netscape
ではダウンロード扱いになり、困った人がたくさんいたということなのでしょうね。
If the artifact is cached, the response should be:
status 200
content-type application/octet-stream
32 bit big endian signed integer denoting the number of length in bytes of the metadata
(1) bytes of metadata
The artifact's data
[45] Fix overrideMimeType() again (annevk著, ) https://github.com/whatwg/xhr/commit/121cee50b6f51215f046266642964b4c53a02a7c
[46] 918731 - XMLHttpRequest's overrideMimeType() does not follow the standard () https://bugzilla.mozilla.org/show_bug.cgi?id=918731
[47] No longer render resources requested via FTP (mikewest著, ) https://github.com/whatwg/fetch/commit/c6b3a750f811cb4f628def0313ac317d9dcec88a
[49] RFC 2911 - Internet Printing Protocol/1.1: Model and Semantics (, ) https://tools.ietf.org/html/rfc2911#section-4.1.9.1