2011-09-26 8 views
8

を使用してPOSTを経由してファイルを送信しますスクリプト。は、生のHTTP(パテ)

テスト目的のために、私はパテセッションを介して生のHTTPを使用して同じことをする必要があります。

私は(単なるテキストデータを送信する)この方法通常のPOSTを行うことができます。

POST /test_post.php HTTP/1.1 
Host: example.com 
User-Agent: Mozilla/5.0 
Connection: keep-alive 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 11 

name=myname 

がどのように私は、ファイルをこのように送信することができますか?

答えて

14

あなたはtelnetの中で次のことを試してみてくださいmultipartコンテンツタイプを使用し、進/バイナリ

にファイルデータをエンコードする必要があります。

POST /the_url HTTP/1.1 
User-Agent: Mozilla 
Host: www.example.com 
Content-Length: xxxx 
Content-Type: multipart/form-data; boundary=--------------------31063722920652 
------------------------------31063722920652 
Content-Disposition: form-data; name="a" 

value_for_a 
------------------------------31063722920652 
Content-Disposition: form-data; name="b" 

value_for_b 
------------------------------31063722920652 
Content-Disposition: form-data; name="c"; filename="myfile.txt" 
Content-Type: text/plain 

      This is a test 
      and more 

-----------------------------31063722920652 
Content-Disposition: form-data; name="submit" 

Submit 
-----------------------------31063722920652-- 

は、余分な改行はフィールド名とその間必要であることを忘れないでくださいデータ。また、Content-Lengthの値を更新します。 netcatを持つ

+0

新しいコンテンツの長さでファイルをどのように調整できますか?それはバイト単位のファイルのサイズですか? – xbonez

+1

私は私の答えで生データを完成しました。これで、テキストファイルのペイロードが含まれます。 Content-Lengthは、ペイロード(ファイルを含む)の完全なサイズ(バイト単位)です。 –

+0

Content-Lengthは、最初の境界から最後の境界までに送信されるデータのバイト単位のサイズです。 –

4

オープンポートとは、着信要求を保存します。

nc -l -p 1090 > income-http.txt 

はその後のnetcatにデータを送信するためにフォームを変更します。

<form action="http://localhost:1090/upload_file.php" 
    method="post" enctype="multipart/form-data"> 

は、ブラウザからフォームを送信します。 income-http.txtファイル内のファイルの内容で完全な生の要求を見つけることができます。

income-http.txtを保存することは1回限りの動作です。その後、いつでも保存したリクエストを送信できます。保存されたtxtのHost:ヘッダーを編集する必要があります。

+0

私は本当に着信要求を分析できるという考えが好きです。しかし残念ながら、ポートを開くことは私の選択肢ではありません。それに代わる方法はありますか? – xbonez

+1

ローカルマシン上で一度だけ実行する必要があります。あなたが収入 - http.txtを取得した後、いつでもそれを送ることができます。 – palacsint

+0

ああ、あなたはローカルマシン上のポートを開き、それをルータで転送する必要はないということですか?私はルータにアクセスできない。私はネットキャットショットを与えるでしょう。 – xbonez

関連する問題