Shiro Kawai
shiro****@lava*****
2010年 8月 5日 (木) 06:27:04 JST
ありがとうございます。content-transfer-encodingと'soruce'のfixの パッチ適用しました。 From: Hayashi Masahiro (林 雅博) <mhaya****@gmail*****> Subject: [Gauche-devel-jp] http.scm, mime.scm へのパッチ Date: Sun, 01 Aug 2010 20:41:55 +0900 (JST) > もう一つ twitter の API を実装する上で http.scm の不具合なのか判断に迷っ > ているものがあります。 > > Twitter に画像ファイルを upload する場合は Multipart なデータを POSTし > ないといけないのですが、POST する Request Body 中にある最初の boundary > の前にCRLF があるとTwitter 側でエラー(500 Internal Server Error)になっ > てしまうようです。 ふーむ。mime-compose-messageが最初にCRLFを付加するのは、Caller側で preambleを付加した時にも「boundaryは行頭からはじまる」という 制約を満たせるようにということですが、rfc2046のノート(*)にあるように boundaryは前後のCRLFを含むと考えた方がすっきりするからでもあります。 ただ、http POSTの場合はpreambleを付加することは無いでしょうから、 http-compose-form-dataの段階で先頭のCRLFを取っちゃうっていう 対応はありかなと思います。 この件について何かご存知の方がいらしたら教えてください。特に 情報が無ければhttp-compose-form-dataで対処します。 --shiro (*) rfc2046 section 5.1.1 NOTE: The CRLF preceding the boundary delimiter line is conceptually attached to the boundary so that it is possible to have a part that does not end with a CRLF (line break). Body parts that must be considered to end with line breaks, therefore, must have two CRLFs preceding the boundary delimiter line, the first of which is part of the preceding body part, and the second of which is part of the encapsulation boundary.