2011-09-26 20 views
8

kullanarak POST aracılığıyla bir dosya gönderme senaryo.ham HTTP (Macun)

Test amaçlı olarak, bir Putty oturumuyla ham HTTP kullanarak aynı işlemi yapmalıyım.

Ben (tıpkı metin veri gönderme) bu şekilde normal bir POST yapabilirsiniz:

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 

Nasıl dosya bu şekilde gönderebilir?

cevap

14

Sen Telnet aşağıdaki deneyin multipart içerik türü kullanmak ve

/ikili onaltılık içine dosya verilerini kodlamak zorunda:

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-- 

fazladan satır alan adı arasındaki gerektiğini hatırlatırız onun veri. Ayrıca, Content-Length değerini güncelleyin. netcat ile

+0

Dosyayı yeni içerik uzunluğuna nasıl eklerim? Dosyanın boyutu bayt cinsinden mi olacak? – xbonez

+1

Cevabımdaki ham verileri tamamladım. Artık bir metin dosyası yükü içeriyor. İçerik-Uzunluğu, –

+0

bayt cinsinden tüm yük boyutu (dosya dahil) olacaktır. Content-Length, ilk sınırdan sonuncuya kadar gönderilen veri baytlarındaki boyuttur. –

4

aç liman ve gelen istek kaydedin:

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

Sonra netcat veri göndermek için formunuzu değiştirin:

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

tarayıcınızdan formu gönder. Tam ham isteği, dosyanın içeriği ile income-http.txt dosyasında bulabilirsiniz.

income-http.txt kayıt bir kerelik bir aktivitedir. Daha sonra kaydedilen istekleri istediğiniz zaman gönderebilirsiniz. Kaydedilen txt'de Host: başlığını düzenlemeniz gerektiğini lütfen unutmayın.

+0

Gelen talebi analiz etme fikrini gerçekten çok beğeniyorum. Ama maalesef, bir liman açmak benim için bir seçenek değil. Buna alternatif var mı? – xbonez

+1

Sadece yerel makinenizde ve sadece bir kez yapmanız gerekir. Gelir-http.txt dosyasını aldıktan sonra istediğiniz zaman gönderebilirsiniz. – palacsint

+0

Oh, yerel makinedeki bağlantı noktasını açtığım ve yönlendiriciye iletmek zorunda olmadığım anlamına mı geliyor? Yönelticiye erişimim yok. Netcat'a bir şans vereceğim. – xbonez