multipart/form-dataに限らず主要な通信プロトコルやそのデータで使用する改行コードは、RFCでCRLFが採用されている。
Cocoaのサンプルをパクッてきたプログラム(クライアント側)でmultipart/form-dataを送信したら、Merb(サーバ側)で正しく受け取れないという問題から分かった事。結局、クライアントが送信するmultipart/form-dataの改行コードがLFだったので、Merbのrequest_parsersでParseErrorが出てたというオチ。
一般的なソフトウェアやブラウザなどは、しっかりCRLFで実装されているらしいので、自分たちでクライアントを作り込む時は気を付けよう。
サーバ側をPHPで組むと、すんなり受け取れるんだけど、PHPのリクエストパーサはCRLFでもLFでもパースできるように作られているのかなぁ。すげーなPHP!