| 1 |
wakaba |
1.1 |
|
| 2 |
|
|
|
| 3 |
|
|
* [CODE(MIME)[Content-Disposition:]] 頭欄 (MIME, HTTP, SIP) |
| 4 |
|
|
|
| 5 |
|
|
[44] [DFN[[CODE(MIME)[Content-Disposition]]]] |
| 6 |
|
|
[[実体頭欄]]には、 |
| 7 |
|
|
[[実体]]の[RUBYB[配置] [disposition]]についての情報を記述します。 |
| 8 |
|
|
|
| 9 |
|
|
この頭欄は、ある実体について、たとえば |
| 10 |
|
|
- [[添付]]データか、[[行内]]データか、それとも ... |
| 11 |
|
|
- 保存時のおすすめの[[ファイル名]] |
| 12 |
|
|
|
| 13 |
|
|
のような[Q[性質]]を記述できます。 |
| 14 |
|
|
|
| 15 |
|
|
[50] この頭欄は元々は [ABBR[[[MIME]]] [多目的インターネット・メイル拡張]] |
| 16 |
|
|
で使用するために定義されましたが、 |
| 17 |
|
|
[ABBR[MIME] [多目的インターネット・メイル拡張]] |
| 18 |
|
|
と似た仕組みを採用している |
| 19 |
|
|
[ABBR[[[HTTP]]] [ハイパーテキスト転送プロトコル]] |
| 20 |
|
|
や [ABBR[HTTP] [ハイパーテキスト転送プロトコル]] |
| 21 |
|
|
を流用した [ABBR[[[SIP]]] [セッション初期化プロトコル]] |
| 22 |
|
|
などでも使用されています。 |
| 23 |
|
|
|
| 24 |
|
|
[60] |
| 25 |
|
|
11 |
| 26 |
|
|
([[名無しさん]] [WEAK[2005-08-03 18:07:57 +00:00]]) |
| 27 |
|
|
|
| 28 |
|
|
[[#comment]] |
| 29 |
|
|
|
| 30 |
|
|
|
| 31 |
|
|
* 仕様 |
| 32 |
|
|
|
| 33 |
|
|
[52] [CODE(MIME)[Content-Disposition]] 欄は、 |
| 34 |
|
|
[ABBR[[[MIME]]] [多目的インターネット・メイル拡張]], |
| 35 |
|
|
[ABBR[[[HTTP]]] [ハイパーテキスト転送プロトコル]], |
| 36 |
|
|
[ABBR[[[SIP]]] [セッション初期化プロトコル]] |
| 37 |
|
|
など様々なプロトコルで使用されています。 |
| 38 |
|
|
それぞれのプロトコルの歴史的・技術的その他の理由で、 |
| 39 |
|
|
細かい規定などに様々な違いがあります。 |
| 40 |
|
|
|
| 41 |
|
|
[4] [ABBR[MIME] [多目的インターネット・メイル拡張]] |
| 42 |
|
|
([[電子メイル]]) 系の仕様書: |
| 43 |
|
|
= [1] [[RFC 1806]] |
| 44 |
|
|
-- <urn:ietf:rfc:1806> |
| 45 |
|
|
-- [[実験的]]プロトコルとして提案されましたが、 |
| 46 |
|
|
RFC 2183 によって[[廃止]]されました。 |
| 47 |
|
|
= [2] [[RFC 2183]] |
| 48 |
|
|
-- <urn:ietf:rfc:2183> |
| 49 |
|
|
-- RFC 1808 の改訂版で、[[提案標準]]になりました。 |
| 50 |
|
|
= [3] [[RFC 2184]] |
| 51 |
|
|
-- <urn:ietf:rfc:2184> |
| 52 |
|
|
-- 引数の構文に関する[[更新]]規格です。 |
| 53 |
|
|
-- 提案標準でしたが、 RFC 2231 により廃止されました。 |
| 54 |
|
|
= [51] [[RFC 2231]] |
| 55 |
|
|
-- <urn:ietf:rfc:2231> |
| 56 |
|
|
-- RFC 2184 の改訂版で、引数の構文に関する RFC 2183 |
| 57 |
|
|
の更新規格です。 RFC 2184 と同じく提案標準です。 |
| 58 |
|
|
|
| 59 |
|
|
[48] [ABBR[HTTP] [ハイパーテキスト転送プロトコル]] 系の仕様書: |
| 60 |
|
|
= [18] [ABBR[[[I-D]]] [インターネット原案]] |
| 61 |
|
|
[[draft-faerber-http-content-disp-00]] |
| 62 |
|
|
[CITE[Use of the Content-Disposition header with HTTP]] |
| 63 |
|
|
-- <urn:ietf:id:draft-faerber-http-content-disp-00> |
| 64 |
|
|
-- <http://ftp.ics.uci.edu/pub/ietf/http/draft-faerber-http-content-disp-00.txt> |
| 65 |
|
|
-- [[RFC 2068]]・RFC 2616 を更新することを意図していましたが、 |
| 66 |
|
|
結局 RFC 化されませんでした。 |
| 67 |
|
|
-- RFC 2183 相当の内容です。 RFC 2184 には触れていません。 |
| 68 |
|
|
= [53] [[RFC 2616]] ([[HTTP/1.1]]) |
| 69 |
|
|
-- <urn:ietf:rfc:2616> |
| 70 |
|
|
-- [CITE[19.5.1 Content-Disposition]] |
| 71 |
|
|
-- RFC 自体は[[原案標準]]ですが、 [CODE(HTTP)[Content-Disposition]] |
| 72 |
|
|
の部分は参考です。 |
| 73 |
|
|
-- 制定時期にもかかわらず、 RFC 1806 相当の内容です。 |
| 74 |
|
|
|
| 75 |
|
|
[ABBR[HTTP] [ハイパーテキスト転送プロトコル]] では特に |
| 76 |
|
|
[CODE(MIME)[[[filename]]]] 引数がよく使われているにもかかわらず、 |
| 77 |
|
|
標準化は中途半端な状況です。 |
| 78 |
|
|
|
| 79 |
|
|
[38] [ABBR[SIP] [セッション初期化プロトコル]] 系の仕様書: |
| 80 |
|
|
= [[RFC 3261]] |
| 81 |
|
|
-- [CITE[20.11 Content-Disposition]] |
| 82 |
|
|
-- 提案標準です。 |
| 83 |
|
|
-- 前版の [[RFC 2543]] では定義されていませんでしたが、 |
| 84 |
|
|
この版で RFC 2183 を基に規定され、積極的に用いられています。 |
| 85 |
|
|
なお、 RFC 2231 は参照していません。 |
| 86 |
|
|
= [[RFC 3968]] |
| 87 |
|
|
-- [ABBR[SIP] [セッション初期化プロトコル]] |
| 88 |
|
|
頭欄で使われる引数の登録簿を規定して、初期状態として |
| 89 |
|
|
[CODE(SIP)[Content-Disposition]] には [CODE(SIP)[handling]] |
| 90 |
|
|
が登録されています。 |
| 91 |
|
|
|
| 92 |
|
|
[7] [ABBR[IANA] [インターネット登録番号事務局]] の登録簿: |
| 93 |
|
|
- [CITE[MAIL CONTENT DISPOSITION Values and Parameters]] |
| 94 |
|
|
-- <http://www.iana.org/assignments/mail-cont-disp> |
| 95 |
|
|
10 October 2004 |
| 96 |
|
|
|
| 97 |
|
|
各仕様共通の登録簿です。 |
| 98 |
|
|
|
| 99 |
|
|
[[#comment]] |
| 100 |
|
|
|
| 101 |
|
|
|
| 102 |
|
|
* 構文 |
| 103 |
|
|
|
| 104 |
|
|
[45] |
| 105 |
|
|
- [CODE(ABNF)[[DFN[Content-Disposition]] := "Content-Disposition" *[[WSP]] ":" [ [[FWS]] ] disposition-type *([FWS] ";" [FWS] [[parameter]]) [FWS] ]] |
| 106 |
|
|
|
| 107 |
|
|
構造的に似た [CODE(MIME)[[[Content-Type]]]] 欄とは異なり、 |
| 108 |
|
|
[CODE(ABNF)[disposition-type]] と [CODE(ABNF)[parameter]] |
| 109 |
|
|
は独立です。例えば [CODE(MIME)[filename]] 引数は |
| 110 |
|
|
[CODE(ABNF)[disposition-type]] が [CODE(MIME)[inline]] |
| 111 |
|
|
でも [CODE(MIME)[attachment]] でも何であっても使えます。 |
| 112 |
|
|
|
| 113 |
|
|
[46] [CODE(ABNF)[parameter]] は (少なくても MIME で使う時には) |
| 114 |
|
|
RFC 2184/2231 の方法で拡張されています。 |
| 115 |
|
|
|
| 116 |
|
|
[[#comment]] |
| 117 |
|
|
|
| 118 |
|
|
|
| 119 |
|
|
* Disposition 型 |
| 120 |
|
|
|
| 121 |
|
|
[47] |
| 122 |
|
|
,[CODE(ABNF)[disposition-type]] ,意味 ,状態 ,出典 |
| 123 |
|
|
,[CODE(MIME)[[[aib]]]] ,認証識別本体 , ,SIP ([[RFC 3895]]) |
| 124 |
|
|
,[CODE(MIME)[[[alert]]]] ,利用者に警告する個別音色 , ,"SIP (RFC 3261), [IANAREG]" |
| 125 |
|
|
,[CODE(MIME)[[[ancillary]]]] ,(補助的) ,非標準 ,(draft-newman-mime-cdisp-metadata <urn:ietf:rfc:draft-newman-mime-cdisp-metadata-02>) |
| 126 |
|
|
,[CODE(MIME)[[[attachment]]]] ,利用者が表示を制御 , ,"MIME (RFC 1806, RFC 2183), HTTP (I-D), [IANAREG]" |
| 127 |
|
|
,[CODE(MIME)[[[early-session]]]] ,早期通信セッション記述 , ,"SIP (RFC to be), [IANAREG]" |
| 128 |
|
|
,[CODE(MIME)[[[file]]]] ,ファイル[[提出]] ,誤り ,"[[フォーム]] (RFC 2388, [[HTML 4.01]] 初版)" |
| 129 |
|
|
,[CODE(MIME)[[[form-data]]]] , ,[[フォーム]]応答として処理 ,"[[フォーム]] ([[RFC 1867]], [[RFC 2388]]), [IANAREG]" |
| 130 |
|
|
,[CODE(MIME)[[[icon]]]] ,利用者に絵として表示 , ,"SIP (RFC 3261), [IANAREG]" |
| 131 |
|
|
,[CODE(MIME)[[[inline]]]] ,自動的に表示 , ,"MIME (RFC 1806, RFC 2183), HTTP (I-D), [IANAREG]" |
| 132 |
|
|
,[CODE(MIME)[[[render]]]] ,利用者に表示するべき , ,"SIP (RFC 3261), [IANAREG]" |
| 133 |
|
|
,[CODE(MIME)[[[session]]]] ,通信セッション記述 , ,"SIP (RFC 3261), [IANAREG]" |
| 134 |
|
|
,[CODE(MIME)[[[signal]]]] ,黙って処理するトンネル化内容 , ,"SIP ([[RFC 3204]]), [IANAREG]" |
| 135 |
|
|
,[CODE(MIME)[[[signed-receipt-protocol]]]] , ,署名受信者用要求署名形式 ,"SIP (RFC 3335), [IANAREG]" |
| 136 |
|
|
,[CODE(MIME)[[[signed-receipt-micalg]]]] , ,署名受信者用要求署名算法 ,"SIP (RFC 3335), [IANAREG]" |
| 137 |
|
|
|
| 138 |
|
|
[58] |
| 139 |
|
|
aa |
| 140 |
|
|
([[bb]] [cc] [WEAK[2005-02-26 04:10:03 +00:00]]) |
| 141 |
|
|
|
| 142 |
|
|
[[#comment]] |
| 143 |
|
|
|
| 144 |
|
|
|
| 145 |
|
|
* パラメーター |
| 146 |
|
|
|
| 147 |
|
|
[49] |
| 148 |
|
|
,引数名 ,説明 ,状態 ,出典 |
| 149 |
|
|
,[CODE(MIME)[[[alternates]]]] ,代替媒体型 ,非標準 ,W3C NOTE-[[device-upload]] |
| 150 |
|
|
,[CODE(MIME)[[[creation-date]]]] ,作成日時 , ,"MIME (RFC 2183), HTTP (I-D), [IANAREG]" |
| 151 |
|
|
,[CODE(MIME)[[[device]]]] ,作成機器 ,非標準 ,W3C NOTE-[[device-upload]] |
| 152 |
|
|
,[CODE(MIME)[[[filename]]]] ,[[ファイル名]] , ,"MIME (RFC 1806, RFC 2183), HTTP (RFC 2616), [IANAREG]" |
| 153 |
|
|
,[CODE(MIME)[[[handling]]]] ,処理が必要か , ,"SIP ([[RFC 3204]], [[RFC 3968]]), [IANAREG]" |
| 154 |
|
|
,[CODE(MIME)[[[modification-date]]]] ,編集日時 , ,"MIME (RFC 2183), HTTP (I-D), [IANAREG]" |
| 155 |
|
|
,[CODE(MIME)[[[name]]]] ,[[フォーム]]欄名 , ,"フォーム ([[RFC 1867]], [[RFC 2388]]), [IANAREG]" |
| 156 |
|
|
,[CODE(MIME)[[[read-date]]]] ,読取日時 , ,"MIME (RFC 2183), HTTP (I-D), [IANAREG]" |
| 157 |
|
|
,[CODE(MIME)[[[size]]]] ,大体の大きさ , ,"MIME (RFC 2183), HTTP (I-D), [IANAREG]" |
| 158 |
|
|
,[CODE(MIME)[[[voice]]]] , ,音声内容の型・用途 ,"[ABBR[[[VPIM]]] [インターネット・メイル音声プロファイル]] ([[RFC 2421]]), [IANAREG]" |
| 159 |
|
|
|
| 160 |
|
|
[8] [[RFC 2183]] で調子に乗って色々定義しましたが、 [[MIME]] では |
| 161 |
|
|
[CODE(MIME)[filename]] 引数以外ほとんど使われていません。 |
| 162 |
|
|
|
| 163 |
|
|
[[#comment]] |
| 164 |
|
|
|
| 165 |
|
|
|
| 166 |
|
|
** Voice パラメーター |
| 167 |
|
|
|
| 168 |
|
|
[16] IANAREG (>>7) に値の一覧があります。 |
| 169 |
|
|
,Voice-Message , ,[[[RFC2421]]] |
| 170 |
|
|
,Voice-Message-Notification , ,[RFC 2421] |
| 171 |
|
|
,Originator-Spoken-Name , ,[RFC 2421] |
| 172 |
|
|
,Recipient-Spoken-Name , ,[RFC 2421] |
| 173 |
|
|
,Spoken-Subject , ,[RFC 2421] |
| 174 |
|
|
|
| 175 |
|
|
[[#comment]] |
| 176 |
|
|
|
| 177 |
|
|
|
| 178 |
|
|
** Handling パラメーター |
| 179 |
|
|
|
| 180 |
|
|
[17] IANAREG (>>7) に値の一覧があります。 |
| 181 |
|
|
,required ,本体を理解しなければならない ,[[[RFC3204]]] |
| 182 |
|
|
,optional ,本体は黙って捨てても良い ,[RFC 3204] |
| 183 |
|
|
- [27] [[RFC 3459]] が RFC 3204 を update して、 [CODE[HANDLING]] パラメーターの定義を乗っ取りました。 |
| 184 |
|
|
- [28] 既定値は [CODE(MIME)[required]], 未対応値の扱いも [CODE(MIME)[REQUIRED]] です。 |
| 185 |
|
|
[[#comment]] |
| 186 |
|
|
|
| 187 |
|
|
|
| 188 |
|
|
* 仕様書から |
| 189 |
|
|
|
| 190 |
|
|
|
| 191 |
|
|
** RFC 2616 (HTTP/1.1) 19.5.1 Content-Disposition |
| 192 |
|
|
|
| 193 |
|
|
[5] |
| 194 |
|
|
|
| 195 |
|
|
> The Content-Disposition response-header field has been proposed as a |
| 196 |
|
|
means for the origin server to suggest a default filename if the user |
| 197 |
|
|
requests that the content is saved to a file. This usage is derived |
| 198 |
|
|
from the definition of Content-Disposition in RFC 1806 [35]. |
| 199 |
|
|
|
| 200 |
|
|
[CODE(HTTP)[Content-Disposition]] [[応答頭欄]]は、 |
| 201 |
|
|
[[利用者]]が[[内容]]を[[ファイル]]に保存する場合の既定の[[ファイル名]]を[[起源鯖]]が提案するための手段として提案されています。 |
| 202 |
|
|
この使用は [[RFC1806]] の [CODE(MIME)[Content-Disposition]] |
| 203 |
|
|
の定義から派生しています。 |
| 204 |
|
|
|
| 205 |
|
|
> |
| 206 |
|
|
- content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm ) |
| 207 |
|
|
- disposition-type = "attachment" | disp-extension-token |
| 208 |
|
|
- disposition-parm = filename-parm | disp-extension-parm |
| 209 |
|
|
- filename-parm = "filename" "=" quoted-string |
| 210 |
|
|
- disp-extension-token = token |
| 211 |
|
|
- disp-extension-parm = token "=" ( token | quoted-string ) |
| 212 |
|
|
|
| 213 |
|
|
> An example is |
| 214 |
|
|
- Content-Disposition: attachment; filename="fname.ext" |
| 215 |
|
|
|
| 216 |
|
|
> The receiving user agent SHOULD NOT respect any directory path |
| 217 |
|
|
information present in the filename-parm parameter, which is the only |
| 218 |
|
|
parameter believed to apply to HTTP implementations at this time. The |
| 219 |
|
|
filename SHOULD be treated as a terminal component only. |
| 220 |
|
|
|
| 221 |
|
|
現時点では [CODE(ABNF)[filename-parm]] 引数だけが HTTP |
| 222 |
|
|
実装に適用されると信じられていますが、 |
| 223 |
|
|
受信した[[利用者エージェント]]は、 [CODE(ABNF)[filename-parm]] |
| 224 |
|
|
引数に示されたいかなる[[ディレクトリ]][[経路]]情報も尊重する'''べきではありません'''。 |
| 225 |
|
|
ファイル名は最終部品のみとして扱う'''べきです'''。 |
| 226 |
|
|
|
| 227 |
|
|
> If this header is used in a response with the application/octet-stream content-type, the implied suggestion is that the user agent |
| 228 |
|
|
should not display the response, but directly enter a `save response |
| 229 |
|
|
as...' dialog. |
| 230 |
|
|
|
| 231 |
|
|
この頭が[[応答]]で [CODE(MIME)[[[application/octet-stream]]]] |
| 232 |
|
|
[[内容型]]と共に使われている場合は、利用者エージェントは応答を表示するべきではなく、 |
| 233 |
|
|
「応答を保存・・・」対話に直接入るべきであることを暗に提案しています。 |
| 234 |
|
|
|
| 235 |
|
|
> See section 15.5 for Content-Disposition security issues. |
| 236 |
|
|
|
| 237 |
|
|
|
| 238 |
|
|
** RFC 2616 (HTTP/1.1) 15.5 Content-Disposition Issues |
| 239 |
|
|
|
| 240 |
|
|
> RFC 1806 [35], from which the often implemented Content-Disposition |
| 241 |
|
|
(see section 19.5.1) header in HTTP is derived, has a number of very |
| 242 |
|
|
serious security considerations. Content-Disposition is not part of |
| 243 |
|
|
the HTTP standard, but since it is widely implemented, we are |
| 244 |
|
|
documenting its use and risks for implementors. See RFC 2183 [49] |
| 245 |
|
|
(which updates RFC 1806) for details. |
| 246 |
|
|
|
| 247 |
|
|
[[HTTP]] でしばしば実装される [CODE(HTTP)[Content-Disposition]] |
| 248 |
|
|
頭は [[RFC 1806]] から派生したものですが、 RFC 1806 |
| 249 |
|
|
には多くの非常に深刻な安全上の問題があります。 [CODE(HTTP)[Content-Disposition]] |
| 250 |
|
|
は HTTP 規格の一部ではありませんが、広く実装されていることから、 |
| 251 |
|
|
その使用と危険を実装者のために文章化しています。 |
| 252 |
|
|
詳しくは (RFC 1806 を更新する) [[RFC 2183]] をご覧下さい。 |
| 253 |
|
|
|
| 254 |
|
|
|
| 255 |
|
|
** RFC の部分の License |
| 256 |
|
|
|
| 257 |
|
|
[[RFCのライセンス]] |
| 258 |
|
|
|
| 259 |
|
|
|
| 260 |
|
|
* 実装 |
| 261 |
|
|
|
| 262 |
|
|
- [22] 現実の実装では [[Content-Type:]] 欄の値, この [CODE[Content-Disposition:]] 欄の値、それに [[URI]] のファイル名やその他の条件で、 [[WWW]] ブラウザ等はブラウザ内で表示したり保存ダイアログを出したり, どの部分をファイル名に採用するかを決めたり、云々でばらばらで混乱していますね。 (特に [[M$IE]] の場合は、版によっても挙動が変わったり、同じ版でも Windows Registry の設定で不可解に変化したりするそうです。) |
| 263 |
|
|
- [23] サーバーが UA に保存させるのに、 dispositon 型 [CODE[file]] を指定して、 [SAMP[Content-Disposition: file; filename=foo]] のように指定することがあるようです。 ([[CGI]] script とかで。) |
| 264 |
|
|
- [24] ''Bug 2781 - freemail.ne.jp(GraceMail)でメール本文が表示されない(Content-disposition: attachment)'' <http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=2781> CD: におかしな値を設定していたために、 [[Mozilla]] の動作が規格により従う形に変更された際に意図せぬ動作をするようになった例。 |
| 265 |
|
|
|
| 266 |
|
|
[55] |
| 267 |
|
|
[CITE[content-disposition:attachment ヘッダを返すコンテンツにアクセスすると、親フレームが消えてしまう]] <http://support.microsoft.com/?scid=kb;ja;889656> |
| 268 |
|
|
|
| 269 |
|
|
> 新規に開かれたウィンドウ内のフレーム構成のコンテンツの子フレームから content-disposition:attachment ヘッダが付加されたコンテンツにアクセスした際に、呼び出しもとの親フレームのウィンドウが消えてしまう場合があります。 |
| 270 |
|
|
|
| 271 |
|
|
[[WinIE]] の実装ってすごく不思議なことがいろいろ起こりますよね。 |
| 272 |
|
|
|
| 273 |
|
|
[56] |
| 274 |
|
|
[CITE[[IE] Content-Disposition: attachment でファイルをダウンロードするとフレームが更新されなくなる]] <http://support.microsoft.com/default.aspx?scid=kb;ja;418126> |
| 275 |
|
|
|
| 276 |
|
|
> Internet Explorer でサーバーから Content-Disposition: attachment ヘッダーによって渡されたファイルを保存すると、その後フレームの内容を更新するようなリンクが反応しなくなります。 |
| 277 |
|
|
> また、このとき、スクリプトを実行している場合は、「アクセスが拒否されました」というエラーのダイアログが表示される場合があります。 |
| 278 |
|
|
|
| 279 |
|
|
WinIE ってつくづく不思議v 回避策も意味不明で素敵w |
| 280 |
|
|
|
| 281 |
|
|
[[#comment]] |
| 282 |
|
|
|
| 283 |
|
|
|
| 284 |
|
|
* 例 |
| 285 |
|
|
|
| 286 |
|
|
[54] 電子メイルに画像を[[行内]]表示で埋込む例: |
| 287 |
|
|
[PRE(822)[ |
| 288 |
|
|
[CODE(MIME)[[[Content-Type]]]]: [CODE(MIME)[[[multipart/mixed]]]]; |
| 289 |
|
|
[CODE(MIME)[[[boundary]]]]="boundary" |
| 290 |
|
|
--boundary |
| 291 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[[[text/plain]]]]; |
| 292 |
|
|
[CODE(MIME)[[[charset]]]]=[CODE(charset)[[[ISO-2022-JP]]]] |
| 293 |
|
|
先日の旅行で撮った写真を送ります。 |
| 294 |
|
|
--boundary |
| 295 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[[[image/png]]]] |
| 296 |
|
|
[CODE(MIME)[[[Content-Transfer-Encoding]]]]: [CODE(MIME)[[[Base64]]]] |
| 297 |
|
|
[CODE(MIME)[[[Content-Disposition]]]]: [CODE(MIME)[[[inline]]]] |
| 298 |
|
|
[VAR[... Base64 で符号化した画像データ ...]] |
| 299 |
|
|
--boundary |
| 300 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[[[text/plain]]]]; |
| 301 |
|
|
[CODE(MIME)[[[charset]]]]=[CODE(charset)[[[ISO-2022-JP]]]] |
| 302 |
|
|
どうですか? 素敵なところでしょう? |
| 303 |
|
|
--boundary-- |
| 304 |
|
|
]PRE] |
| 305 |
|
|
|
| 306 |
|
|
レンダリング例: |
| 307 |
|
|
[PRE[ |
| 308 |
|
|
先日の旅行で撮った写真を送ります。 |
| 309 |
|
|
+---------------------------------------+ |
| 310 |
|
|
| | |
| 311 |
|
|
: (写真) : |
| 312 |
|
|
| | |
| 313 |
|
|
+---------------------------------------+ |
| 314 |
|
|
どうですか? 素敵なところでしょう? |
| 315 |
|
|
]PRE] |
| 316 |
|
|
|
| 317 |
|
|
[25] 電子メイルに画像を[[添付]]する例: |
| 318 |
|
|
[PRE(822)[ |
| 319 |
|
|
[CODE(MIME)[[[Content-Type]]]]: [CODE(MIME)[[[multipart/mixed]]]]; |
| 320 |
|
|
[CODE(MIME)[[[boundary]]]]="boundary" |
| 321 |
|
|
--boundary |
| 322 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[[[text/plain]]]]; |
| 323 |
|
|
[CODE(MIME)[[[charset]]]]=[CODE(charset)[[[ISO-2022-JP]]]] |
| 324 |
|
|
先日の旅行で撮った写真を送ります。 |
| 325 |
|
|
--boundary |
| 326 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[[[image/png]]]] |
| 327 |
|
|
[CODE(MIME)[[[Content-Transfer-Encoding]]]]: [CODE(MIME)[[[Base64]]]] |
| 328 |
|
|
[CODE(MIME)[[[Content-Disposition]]]]: [CODE(MIME)[[[attachment]]]] |
| 329 |
|
|
[VAR[... Base64 で符号化した画像データ ...]] |
| 330 |
|
|
--boundary |
| 331 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[[[text/plain]]]]; |
| 332 |
|
|
[CODE(MIME)[[[charset]]]]=[CODE(charset)[[[ISO-2022-JP]]]] |
| 333 |
|
|
どうですか? 素敵なところでしょう? |
| 334 |
|
|
--boundary-- |
| 335 |
|
|
]PRE] |
| 336 |
|
|
|
| 337 |
|
|
レンダリング例: |
| 338 |
|
|
[PRE[ |
| 339 |
|
|
先日の旅行で撮った写真を送ります。 /+----+ |
| 340 |
|
|
<<< +-+ | |
| 341 |
|
|
どうですか? 素敵なところでしょう? | 写真 | |
| 342 |
|
|
+------+ |
| 343 |
|
|
]PRE] |
| 344 |
|
|
|
| 345 |
|
|
[Q[写真]]の絵にマウス・ポインタを合わせると、 |
| 346 |
|
|
写真が表示されます。 [WEAK[(あくまで実現の一例です。)]] |
| 347 |
|
|
|
| 348 |
|
|
[26] [[HTML]] の[[フォーム]]の[[提出]]の例: |
| 349 |
|
|
[PRE(HTML)[ |
| 350 |
|
|
<[CODE(HTMLe)[[[form]]]] [CODE(HTMLa)[[[enctype]]]]="[CODE(MIME)[[[multipart/form-data]]]]"> |
| 351 |
|
|
<[CODE(HTMLe)[[[dl]]]]> |
| 352 |
|
|
<[CODE(HTMLe)[[[dt]]]]>名前</[CODE(HTMLe)[dt]]> |
| 353 |
|
|
<[CODE(HTMLe)[[[dd]]]]> |
| 354 |
|
|
<[CODE(HTMLe)[[[input]]]] [CODE(HTMLa)[[[type]]]]="text" |
| 355 |
|
|
[CODE(HTMLa)[[[name]]]]="usrname" |
| 356 |
|
|
[CODE(HTMLa)[[[value]]]]="名無しさん" /> |
| 357 |
|
|
</[CODE(HTMLe)[dd]]> |
| 358 |
|
|
<[CODE(HTMLe)[[[dt]]]]><[CODE(HTMLe)[input]] [CODE(HTMLa)[type]]="[[submit]]" /></[CODE(HTMLe)[dt]]> |
| 359 |
|
|
</[CODE(HTMLe)[dl]]> |
| 360 |
|
|
</[CODE(HTMLe)[form]]> |
| 361 |
|
|
]PRE] |
| 362 |
|
|
|
| 363 |
|
|
このフォームから提出すると: |
| 364 |
|
|
[PRE(MIME)[ |
| 365 |
|
|
[CODE(MIME)[Content-Type]]: [CODE(MIME)[multipart/form-data]]; |
| 366 |
|
|
[CODE(MIME)[boundary]]="boundary" |
| 367 |
|
|
--boundary |
| 368 |
|
|
Content-Type: text/plain; charset=[CODE(charset)[ISO-2022-JP]] |
| 369 |
|
|
Content-Disposition: [[form-data]]; [[name]]="usrname" |
| 370 |
|
|
名無しさん |
| 371 |
|
|
--boundary-- |
| 372 |
|
|
]PRE] |
| 373 |
|
|
|
| 374 |
|
|
[61] |
| 375 |
|
|
|
| 376 |
|
|
[PRE(HTTP example code)[ |
| 377 |
|
|
Content-Disposition: file; filename=name.suffix |
| 378 |
|
|
]PRE] |
| 379 |
|
|
|
| 380 |
|
|
([[HTTP]][[応答]]) |
| 381 |
|
|
|
| 382 |
|
|
;; 出典: [CITE[Lynx Users Guide v2.7.1]] <http://leb.net/blinux/blynx/Lynx_users_guide.html#19> |
| 383 |
|
|
|
| 384 |
|
|
([[名無しさん]] [sage]) |
| 385 |
|
|
|
| 386 |
|
|
[[#comment]] |
| 387 |
|
|
|
| 388 |
|
|
|
| 389 |
|
|
* メモ |
| 390 |
|
|
|
| 391 |
|
|
[19] [CODE[Content-Disposition:]] 欄は、 HTTP でも (特に [[CGI]] script の類で) よく使われるにも拘らず、 HTTP Core 仕様書は簡単に触れるにとどまっています。 >>18 は RFC 2184 及び現実の使用状況・ HTTP の仕様をそれなりに折り合わせたもので、実装の指針としては (期限切れ I-D ながらも) 十分な品質だと思われます。 |
| 392 |
|
|
- [21] >>19 ただし、 >>20 のような問題には触れていませんから、もちろんこの I-D に従って実装すれば良いというものでもありません。 |
| 393 |
|
|
|
| 394 |
|
|
- [29] Referer とか「注目の WikiPage」ランキングみてると、実は [CODE[Content-Disposition]] 欄ってすごい人気ですね。やっぱり「[[HTTP]] で[[ダウンロード]]させる[[ファイル名]]を指定する方法」として有名だからかな? |
| 395 |
|
|
- [31] >>29 [[とほほ]]とか [[CGI-ML]] とか [[Web相談室]]とかが普及に貢献してますから(w |
| 396 |
|
|
- [32] それにしても、 HTTP 用のこの欄が標準化されないのはすごく謎。他の MIME 由来欄はちゃんと標準化してるのに。特にファイル名の非 ASCII 文字の問題 ([[encoded-word]] or [[RFC 2231]] or 生) という大問題があるから、 MIME 任せには出来ないと思うんだけど。 (2231 実装している HTTP UA なんてあるんだろうか?) |
| 397 |
|
|
- [33] [WEAK[2003-08-29 11:41:24 +00:00]] ''[[attachment]]'': >>29 この WikiPage は [[Google]] で日本語11位にランクインしてますから(藁 |
| 398 |
|
|
|
| 399 |
|
|
[57] |
| 400 |
|
|
<IW:Google:"Content-Disposition"> などで検索してみるとひどい状況。仕様書がひどくて実装もひどけりゃウェブの文書もひどくなるのは至極当然。 |
| 401 |
|
|
そうはいっても、 Google 上位サイトで仕様書を参照しているサイトはどれだけあります? 参照して無くても、読んだことがありそうな人が書いてる文書はどれだけあります? この分野全般について言えることですけど、わかりやすくて正しい解説書・解説サイトがほぼ皆無というのも問題かも。 |
| 402 |
|
|
([[名無しさん]] [WEAK[2005-01-19 08:48:15 +00:00]]) |
| 403 |
|
|
|
| 404 |
|
|
[59] |
| 405 |
|
|
FirefoxはRFC 2231実装してますね。WinIE6やOpera8はしていませんが。 |
| 406 |
|
|
([[成瀬]] [WEAK[2005-05-22 08:58:59 +00:00]]) |
| 407 |
|
|
|
| 408 |
|
|
[62] |
| 409 |
|
|
[CITE@ja[JVN#95019167: Internet Explorer における MHTML によるダウンロードのダイアログボックス回避の脆弱性]] ([CODE[2007-06-21 17:52:08 +09:00]] 版) <http://jvn.jp/jp/JVN%2395019167/index.html> |
| 410 |
|
|
([[名無しさん]] [WEAK[2007-06-24 07:41:31 +00:00]]) |
| 411 |
|
|
|
| 412 |
|
|
[63] |
| 413 |
|
|
[CITE@ja[JVN#27203006: Internet Explorer における MHTML により任意のスクリプトが実行される脆弱性]] ([CODE[2007-06-21 17:52:08 +09:00]] 版) <http://jvn.jp/jp/JVN%2327203006/index.html> |
| 414 |
|
|
([[名無しさん]] [WEAK[2007-06-24 07:42:16 +00:00]]) |
| 415 |
|
|
|
| 416 |
|
|
[64] |
| 417 |
|
|
[CITE[Test Cases for HTTP Content-Disposition header and RFC 2231/2047 Encoding]] ([TIME[2008-09-21 02:53:50 +09:00]] 版) <http://greenbytes.de/tech/tc2231/> |
| 418 |
|
|
([[名無しさん]]) |
| 419 |
|
|
|