勉強のためにHTTPサーバーをC++で自作しております。
ヘッダに
Content-Type: multipart/form-data
が含まれている場合のデータの取得方法についてお伺いします。
Content-Lengthの値は複数のデータを合計した値になるので、複数のデータを分離するためには、boundary=で指定された区切り文字で区切って複数のデータを分離取り出すしかないと思っています。
たまたま、データの中にboundary=で指定された区切り文字と同じ文字があった場合は、POSTに失敗する…という理解でよいでしょうか。
以下に例を書きます。
[curlコマンド]
curl -X POST -F "name=ap2" -F "name2=c9w" http://127.0.0.1/test.php
[生成されるリクエスト]
POST /test.php HTTP/1.1 Host: 127.0.0.1 User-Agent: curl/7.58.0 Accept: */* Content-Length: 239 Content-Type: multipart/form-data; boundary=------------------------8c857c294f34001a --------------------------8c857c294f34001a Content-Disposition: form-data; name="name" ap2 --------------------------8c857c294f34001a Content-Disposition: form-data; name="name2" c9w --------------------------8c857c294f34001a--
[もし以下のようなリクエストがきたらどうなるのか]
--------------------------8c857c294f34001a Content-Disposition: form-data; name="name" ap2 --------------------------8c857c294f34001a Content-Disposition: form-data; name="name2" --------------------------8c857c294f34001a ← たまたまboundaryと同じ文字を送信した場合はどうなるのか。 --------------------------8c857c294f34001a--
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/03 02:39