SATOXのシテオク日記 このページをアンテナに追加 RSSフィード Twitter

最近日記一覧(30)

[PRG]Visual Studio Installerにインストール環境条件をつける
[メモ]スマートフォンは5年以内に時代遅れになる?
[間違い]クリミナルガールズ
[間違い]東京ねこなかまさんのサイト
[PRG]全天球動画編集前のファイル仕分けバッチ作ってみた
[間違い]USB3.0リンクケーブル製品ページ
[私信]「言う」と「いう」
[駄文]Windows10アップグレードの抑止方法
[駄文]韓国「盗んだ仏像は取りに来たら返す」
[私信]7/15 Amazon PRIME DAY(プライムデー)に何が起こる?
[私信]カレー味、ゆず味
[メモ]2020年にフォーミュラEはF1を上回る
[PRG]Android+Eclipse+NDKの問題
[F1]2014第13戦イタリア決勝結果
[F1]2014第13戦イタリア予選結果
[ゲーム]ドラクエ無双がPS4で登場
[駄文]はやぶさ2機体公開
[私信]いるいる「24時間テレビは偽善者」と言いたい人
[F1]マックス・フェルスタッペン、ドーナツターン失敗
[F1][動画]フォーミュラ1VSフォーミュラE
[駄文]Seageteが8TB HDDをサンプル出荷
[F1]2014第12戦ベルギー決勝結果
[F1]2014第12戦ベルギー予選結果
[F1]フォーミュラE徹底ガイド観た
[F1]アンドレ・ロッテラーはケータハムに身を置くつもりはない模様
[F1]小林可夢偉、ケータハムのシートを失う
[F1]フォーミュラE最終テストタイム
[F1]佐藤公哉、Auto GPでシリーズチャンピオン獲得
[動画]アザラシとサーフィン
[駄文]ハイスコアガール著作権問題

最新トラックバック一覧

最新コメント一覧

1. 10/05 鉄板
2. 01/08 やまさん
3. 10/05 まぁぶぅ
4. 09/29 かわむら
5. 06/27 satox
6. 06/27 chap-chap3
7. 07/22 satox
8. 07/22 よこたん
9. 06/16 satox
10. 06/16 『壁』

SATOXのむにむにアンテナ

最近の言及URL

シテオクカウンタグラフ

satoxのシテオクカウンタ

一生どうでしょうします!

連絡先アドレス

文句、苦情、愛の告白、
日常の愚痴、応援のお便り、
週報送り先などは以下の通り。

その他

■QRコード(URL):
SATOXのシテオク日記 for mobile
SATOXのシテオク日記は、携帯向けに最適化された内容で閲覧することができますぞ。

将来は猫になりたいSATOX(さとっくす)ことダメな人が、シテオクな日記を綴ったり綴らなかったり。
F1伊集院光水曜どうでしょう猫好きぷに絵描き。お仕事はゲーム関連のプログラマやってます。
follow us in feedly My Yahoo!に追加 Subscribe with livedoor Reader Bloglinesで閲読登録

2011-07-26(Tue)

ながーい

[]いまさら聞けないHTTPマルチパートフォームデータ送信

放蕩SATOXさん、最近、ネットワーク関連の勉強をしておりまして、アプリケーションからPHPを叩いたりしたりしています。

リモートプロシージャ的にマルチパートフォームデータで任意のコマンドやバイナリファイルを送ったりなんかするのですが、Socketを直に使っていたりするのでHTTPのプロトコルを使って通信しないといけません。

通信周りに詳しい方にとっては「今更そんなこと……」なんて言われてしまいそうなものですが、自分のためにもマルチパートフォームデータを使う際の送信内容について、覚え書きとして書いておこうと思った次第です。

ちなみに、マルチパートフォームデータとは、HTTPのリクエストで複数のフォームデータ(マルチパート)を送るための形式(HTTPのプロトコル)です。誰でもよく使っているもので、ブラウザであるページを開いて、名前の入力+画像ファイルのアップロード、なんてときに使われています。

 

■HTTPヘッダ部

コンテントタイプに以下を指定します。

Content-Type: multipart/form-data; boundary=「バウンダリ文字列」\r\n

バウンダリ文字列とは、複数の情報を続けて送る際の情報同士の「仕切線」の役目を果たします。この文字を調べて「仕切線」と判断するため、情報そのものにバウンダリ文字列が入っていてはいけません。

FireFoxで転送してみた内容を見てみると「---------------------------102852708831426」というように「-」27文字と数字15文字で構成されており、ランダムの数字が付いていました。

\r\nは改行文字を示します。

 

■ボディ部

フォームデータ

--「バウンダリ文字列」\r\n
Content-Disposition: form-data; name="「フォームデータ名」"\r\n
\r\n
「フォームデータ」\r\n

上記が1つの情報(コンテンツ)を示しています。

例えば、HTMLのINPUTタグでname="password" value="ponpoko"と入力したとき、name=「フォームデータ名」、value=「フォームデータ」と等価です。

バイナリデータ

Content-Disposition: form-data; name="submitfile"; filename="myfile.txt"\r\n
Content-Type: application/octet-stream\r\n
Content-Transfer-Encoding: binary\r\n
\r\n
「バイナリデータ」

マルチパートフォームデータにファイルの実体を含めたい場合があります。上記がバイナリ送信の例です。Content-TypeやContent-Transfer-Encodingなどは任意の設定を行ってください。

 

フッタ

--「バウンダリ文字列」--\r\n

マルチパートフォームデータの終端には上記のフッタを書き込みます。

 

■サンプル

以下、マルチパートフォームデータのポスト内容のサンプルです。

POST test.php HTTP/1.1\r\n
Host: satoxpochi.com\r\n
Content-Type: multipart/form-data; boundary=---------------------------102852708831426\r\n
Content-Length: 「ボディ部のサイズ」\r\n
\r\n
-----------------------------102852708831426\r\n
Content-Disposition: form-data; name="password"\r\n
\r\n
ponpoko\r\n
-----------------------------102852708831426\r\n
Content-Disposition: form-data; name="level"\r\n
\r\n
high\r\n
-----------------------------102852708831426\r\n
Content-Disposition: form-data; name="filename"; filename="text.txt"\r\n
Content-Type: application/octet-stream\r\n
Content-Transfer-Encoding: binary\r\n
\r\n
abcd
-----------------------------102852708831426--\r\n

この例では、フォームデータとしてpassword=ponpoko、level=highを送信し、「abcd」とだけ書かれたtext.txtをバイナリデータとして送信内容に含め、http://satoxpochi.com/test.php(存在しません)宛にポストしています。

ヘッダ部の内容はシンプルにしていて、Content-Lengthは正しい値を入れないといけないのですが、そこさえ入力すればこれだけでもPHPに必要な情報が渡せます。

さぁこれで、気になるあの娘にマルチパートフォームデータを投げつけられますね。

milk’nmilk’n 2011/07/26 20:05 *SATOXさん*
今晩は(^^)。お疲れ様ですm(__)m

私はインターネットはちんぷんかんぷんで全く無知です(+_+)私の為に更新されている気がします…有難うございます(^^;
今日は肌に触れる風が気持ち善いぃ〜1日でした(^^!先日は空に秋を思わせるさば雲が浮かんでいました!今年は何だか季節が入り交じっている気がしますね…。
SATOXさん。今日…我が家の裏庭に『蝉!!』の声を聴きました≧▽≦/賑やかに鳴いている訳では無いのですが…心で聴いていると何故か涙が出ちゃいましたSATOXさんへご報告しなきゃと思って(^^*
*SATOXさん*の場所でも暫くすると『蝉の声!!』聴こえると思います(^^!
こちらは今雷様が…そろそろ降るのかなぁ〜(+_+)
蝉のお知らせかねてのコメントでした(^-^!

satoxsatox 2011/07/27 03:11 milk’nさん、コメントどうもです♪
この日の日記の内容については気にしないでください(笑)。
今日も風が吹いて暑いけど気持ちの良い日和でしたね。
おお、セミが元気に鳴いていましたか!
わたしも今日、渋谷の宮益坂の街路樹でけたたましく鳴いているのを聞きました。
……夜10時くらいだったのでちょっと異様だったんですけども(^^;
セミ、夕立、雷と来れば、いよいよ夏本番という気持ちになりますね〜。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/satox/20110726/1311665904
200403040506070809101112
2005010203040506070809101112
2006010203040506070809101112
2007010203040506070809101112
2008010203040506070809101112
2009010203040506070809101112
2010010203040506070809101112
2011010203040506070809101112
2012010203040506070809101112
2013010203040506070809101112
2014010203040506070809
201503060708091012
201601

  • satox2016-01-20
  • あっぷ
  • ぬも
  • miteru
  • みてる
  • ピックアップ
  • おばちゃん
  • smilecat
  • ぎょ
  • ぺろりん
  • みる
  • みてる
  • satox2015-03-25
  • 吸う
  • だるい
  • ねこだまり
  • <●><●>
  • 夜景
  • ふいふい
  • gyo
  • ごあいさつ
  • ずるーん
  • すくっ
  • 男爵
  • ぬぬ
  • 胸を借りる
  • ぞうしょく
  • マッシュルーム
  • hirune
  • 寝る子=猫
  • じゆう
  • ねこよけない
  • miteru
  • 涼しい
  • 呼んだ?
  • 群れ
  • おもいかね
  • いっそ飲んでくれ
  • 見つかった!
  • ゆびさしかくにん
  • 対峙
  • だらあん
  • 真ん中分け
  • ベテランの守備
  • 開眼
  • みざる
  • パパラッチ
  • kinenn
  • ずぶぬれ
  • ねこ
  • ねこだまり
  • みてる
  • Twitterに投稿
  • きょうだい
  • ぐーすか
  • だらしないねこ
  • 花占い
  • 店番
  • ちっさいわー
  • 骨肉の
  • めっ
  • キャンプだほい
  • 先客が
    (c) 2004-2014 SATOX All Rights Reserved.