がぶちゃんの日記

札幌からフルリモートCTO

multipart/form-dataの改行コードはCRLFで

multipart/form-dataに限らず主要な通信プロトコルやそのデータで使用する改行コードは、RFCでCRLFが採用されている。

Cocoaのサンプルをパクッてきたプログラム(クライアント側)でmultipart/form-dataを送信したら、Merb(サーバ側)で正しく受け取れないという問題から分かった事。結局、クライアントが送信するmultipart/form-dataの改行コードがLFだったので、Merbのrequest_parsersでParseErrorが出てたというオチ。

一般的なソフトウェアやブラウザなどは、しっかりCRLFで実装されているらしいので、自分たちでクライアントを作り込む時は気を付けよう。

サーバ側をPHPで組むと、すんなり受け取れるんだけど、PHPのリクエストパーサはCRLFでもLFでもパースできるように作られているのかなぁ。すげーなPHP!