Http Talep Paketlerinde Parametre Gönderim Yöntemleri | |||||
(+) Birebir denenmiştir ve başarıyla uygulanmıştır. Gereksinimler
Html <form alanları içerisinde yer alan girdi alanlarını (parametreleri) karşı sunucuya gönderirken <form alanı enctype attribute’una (özelliğine) konulacak üç farklı değerle <form alanındaki parametreleri üç farklı syntax’ta karşı sunucuya gönderebiliriz.
Html <form alanı enctype attribute’u (özelliği) totalde yukarıdaki üç yoldan birini alır ve <form alanında tanımlı girdiler http talep paketinde parametre ve değer olarak belirtilen yola göre bir yapıda (syntax’da) taşınır. Bu durumu gözlemlemek için şimdi sırasıyla 3 farklı dosyada html <form alanı oluşturalım ve üç farklı enctype attribute değerini koyarak form alanını submit ettiğimizde parametrelerin http talep paketinde nasıl gönderiliyor olduğuna bakalım. i. application/x-www-form-urlencoded (varsayılan) Html <form alanında enctype attribute’u belirtilmediğinde (veya enctype attribute’u değeri olarak application/x-www-form-urlencoded değeri belirtildiğinde) form alanının girdileri karşıya & ile ardarda gönderilirler. Örneğin; HTML / PHP: /var/www/formEncTypeTurleri/formAlani1.php: <form action="formAlani1.php" method="POST" enctype="application/x-www-form-urlencoded"> <input type="text" name="param1"> <input type="text" name="param2"> <input type="submit" value="Gonder"/> </form> Form alanı submit’lendiğinde şu http talep paketi karşıya gider. Http Request: POST /formEncTypeTurleri/formAlani1.php HTTP/1.1 Host: 172.16.4.225 Content-Length: 32 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://172.16.4.225 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml; q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8, application/signed-exchange;v=b3;q=0.9 Referer: http://172.16.4.225/formEncTypeTurleri/formAlani1.php Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,tr;q=0.8 Connection: close param1=fatih123¶m2=deneme123 Görüldüğü gibi html <form alanı enctype özelliği enctype="application/x-www-form-urlencoded" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı application/x-www-form-urlencoded olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki parametreler param1=value¶m2=value şeklinde ardarda & (ampersand) ile gönderilmişlerdir. ii. multipart/form-data Html <form alanında normal girdiler dışında “dosya girdisi” yer aldığı zaman bu türden girdinin application/x-www-form-urlencoded ile gönderimi yetersiz kalır. Çünkü bu girdiler büyük nicelikte binary veri veya ASCII olmayan karakter içeren veri gönderimi yapar. Bu durumda html <form alanında enctype özelliğine multipart/form-data değeri koyulur. Bu şekilde html <form alanında dosya içeren, yani ASCII olmayan veri içeren veya binary veri içeren girdilere sahip girdilerin submit’lenmesi mümkün hale gelir. Bu durumda html <form alanındaki girdilerin gönderiminde parametre ve değerler & yerine daha geniş ebatlı parametre değerlerini alabilen bloklar halinde alt alta gönderilirler. Örneğin; HTML / PHP: /var/www/formEncTypeTurleri/formAlani2.php: <form action="formAlani2.php" method="POST" enctype="multipart/form-data"> <input type="text" name="param1"> <input type="text" name="param2"> <input type="file" name="param3"> <input type="submit" value="Gonder"/> </form> Form alanı submit’lendiğinde şu http talep paketi karşıya gider: Http Request: POST /formEncTypeTurleri/formAlani2.php HTTP/1.1 Host: 172.16.4.225 Content-Length: 23435 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://172.16.4.225 Content-Type: multipart/form-data; boundary=----WebKitFormBoundarys89aFVifbfEYaKAp User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/ avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3; q=0.9 Referer: http://172.16.4.225/formEncTypeTurleri/formAlani2.php Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,tr;q=0.8 Connection: close ------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param1" // Parametre Adı (*)
fatih123 // Parametre Değeri ------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param2" // Parametre Adı (*)
deneme123 // Parametre Değeri ------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param3"; filename="icon.png" // Parametre Adı(*)
Content-Type: image/png //Parametre Değeri \89PNG#\00\00\00IHDR\00\00#\00\00\00#\00##\00\00\00\r\A8f\00 \00\00pHYs\00\00##\00\00###\00\9A\9C#\00\00BAiTXtXML:com.adobe. xmp\00\00\00\00\00<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/"x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/"> <xmp:CreateDate>2015-11-21T10:16:55Z</xmp:CreateDate> <xmp:ModifyDate>2015-11-21T17:33:16+05:30</xmp:ModifyDate> <xmp:MetadataDate>2015-11-21T17:33:16+05:30</xmp:MetadataDate> <xmp:CreatorTool>Adobe Photoshop CC 2014 (Macintosh)</xmp:CreatorTool> <dc:format>image/png</dc:format> <xmpMM:History> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <stEvt:action>converted</stEvt:action> <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:33380B0C1F20681183D198339A97386A</stEvt:instanceID> <stEvt:when>2015-11-21T16:00:27+05:30</stEvt:when> <stEvt:changed>/</stEvt:changed> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>converted</stEvt:action> <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:34380B0C1F20681183D198339A97386A</stEvt:instanceID> <stEvt:when>2015-11-21T16:00:27+05:30</stEvt:when> <stEvt:changed>/</stEvt:changed> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:5e3a38f5-78a2-45c3-aada-2da2597e41a3</stEvt:instanceID> <stEvt:when>2015-11-21T17:33:16+05:30</stEvt:when> <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent> <stEvt:changed>/</stEvt:changed> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>converted</stEvt:action> <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>derived</stEvt:action> <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters> </rdf:li> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:f1945919-5f0f-47f0-ad3e-e894540d7ca1</stEvt:instanceID> <stEvt:when>2015-11-21T17:33:16+05:30</stEvt:when> <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent> <stEvt:changed>/</stEvt:changed> </rdf:li> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom rdf:parseType="Resource"> <stRef:instanceID>xmp.iid:5e3a38f5-78a2-45c3-aada-2da2597e41a3</stRef:instanceID> <stRef:documentID>xmp.did:33380B0C1F20681183D198339A97386A</stRef:documentID> <stRef:originalDocumentID>xmp.did:33380B0C1F20681183D198339A97386A</stRef:originalDocumentID> </xmpMM:DerivedFrom> <xmpMM:DocumentID>adobe:docid:photoshop:45ed2120-d0d6-1178-9554-c050520b6f31</xmpMM:DocumentID> <xmpMM:InstanceID>xmp.iid:f1945919-5f0f-47f0-ad3e-e894540d7ca1</xmpMM:InstanceID> <xmpMM:OriginalDocumentID>xmp.did:33380B0C1F20681183D198339A97386A</xmpMM:OriginalDocumentID> <photoshop:ColorMode>3</photoshop:ColorMode> <tiff:Orientation>1</tiff:Orientation> <tiff:XResolution>720000/10000</tiff:XResolution> <tiff:YResolution>720000/10000</tiff:YResolution> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <exif:ColorSpace>65535</exif:ColorSpace> <exif:PixelXDimension>256</exif:PixelXDimension> <exif:PixelYDimension>256</exif:PixelYDimension> </rdf:Description> </rdf:RDF> </x:xmpmeta> !D1:000000
cHRM0000z%000080830000F9FF000080E90000u00000EA`0000:980000 o92_C5F0000 BIDATxDAEC9DytUE5B9C6E7E484̆ F"H80F900( Zł`ADAD8B5 8A0A2 DB{97CAFuACB3u hqhK/AED5ZZKD1 A2E2]VA1B5*T+*X81@E e 88"98908193E4DC?F6 ͊9C3>E7|{EFE7B7D 6^ 89g9FE7{DFgF3 qUE1iF281 E6EA F4 6WCF6W>P DCCCF EDާ h 9A81ZF3F3NE0F 36W8DF9s B0 F8ȼNx9488$F0 C0`A0 j92BDBFB9 uF13F699BY BFF7A91838DC0 A0D Ak8DA9 80H80"`4p,0 r,BDDFCCDu|BBo D6 EF ˁA5C0BBC0 B1=84D4 C8:E5C08`ACB986FAؘ9B81D5C0EBE6zCD4'84 0 E381o99khC0F5A8 ^ FE , EA "200BF....................böyle devam ediyor...... ------WebKitFormBoundarys89aFVifbfEYaKAp-- Yani parametreler Content-Disposition başlığı blokları halinde alt alta şekilde gönderilmişlerdir. Aşağıda binary verinin özet haline taşındığı daha öz bir http talep paketi görüntüsü yer almaktadır. POST /formEncTypeTurleri/formAlani2.php HTTP/1.1 Host: 172.16.4.225 Content-Length: 23435 ... Content-Type: multipart/form-data; boundary=----WebKitFormBoundarys89aFVifbfEYaKAp ...
------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param1" fatih123 ------WebKitFormBoundarys89aFVifbfEYaKAp Content-Disposition: form-data; name="param2" deneme123 ------WebKitFormBoundarys89aFVifbfEYaKAp Content-Disposition: form-data; name="param3"; filename="icon.png" Content-Type: image/png ((( Resim Binary Verisi ))) ------WebKitFormBoundarys89aFVifbfEYaKAp Yukarıdaki parametre gönderim yapısına bakılacak olursa parametre isimleri Content-Disposition başlığında yer almaktadır ve parametre değerleri blokların içerisinde yer almaktadır. Görüldüğü gibi html <form alanı enctype özelliği enctype="multipart/form-data" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı multipart/form-data olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki parametreler Content-Disposition başlığı halinde sıralı alt alta bloklar halinde gönderilmişlerdir. Sonuç olarak parametre ve değerler multipart/form-data Content-Type’ında önceki & (ampersand) ‘lı gönderime nazaran farklı bir syntax’la gönderilmişlerdir. Ancak farklı sytanx’da gönderilseler de sonuçta gönderilen şey parametre ve değerdir. Yani aynı şey karşıya gitmektedir. Fark mutlipart/form-data’da parametre değerleri büyük veri taşıyabileceğinden bloklar halinde verileri taşıma syntax’ına sahiptir. Yani sadece syntax’lar farklıdır. iii. text/plain Html <form alanında girdiler gönderilirken gönderilen parametreleri debugging amaçlı kontrol etmek gerekebilir. Bu gibi durumlarda html <form alanının encType özelliğine text/plain konulur. Bu şekilde html <form alanının gönderdiği parametreler her biri ayrı satırda yer alacak şekilde alt alta gönderilirler. Örneğin; HTML / PHP: /var/www/formEncTypeTurleri/formAlani3.php: <form action="formAlani3.php" method="POST" enctype="text/plain"> <input type="text" name="param1"> <input type="text" name="param2"> <input type="submit" value="Gonder"/> </form> Form alanı submit’lendiğinde şu http talep paketi karşıya gider: Http Request: POST /formEncTypeTurleri/formAlani3.php HTTP/1.1 Host: 172.16.4.225 Content-Length: 35 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://172.16.4.225 Content-Type: text/plain User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9, image/avif,image/webp,image/apng,*/*;q=0.8,application/signed- exchange;v=b3;q=0.9 Referer: http://172.16.4.225/formEncTypeTurleri/formAlani3.php Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,tr;q=0.8 Connection: close param1=fatih123 param2=deneme123 Görüldüğü gibi html <form alanı enctype özelliği enctype="text/plain" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı text/plain olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki parametreler
param1=value
param2=value şeklinde alt alta ayrı satırlar halinde gönderilmişlerdir. Örneğin html <form’unda dosya girdisi de yer aldığında ve enctype’ı text/plain yapıldığında gönderilen parametreler yine her biri ayrı satırda yer alacak şekilde alt alta gönderilir. HTML / PHP: /var/www/formEncTypeTurleri/formAlani4.php: <form action="formAlani4.php" method="POST" enctype="text/plain"> <input type="text" name="param1"> <input type="text" name="param2"> <input type="file" name="param3"> <input type="submit" value="Gonder"/> </form> Form alanı submit’lendiğinde şu http talep paketi karşıya gider: Http Request: POST /formEncTypeTurleri/formAlani4.php HTTP/1.1 Host: 172.16.4.225 Content-Length: 83 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://172.16.4.225 Content-Type: text/plain User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif, image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://172.16.4.225/formEncTypeTurleri/formAlani4.php Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,tr;q=0.8 Connection: close param1=fatih123 param2=deneme123 param3=Screenshot from 2022-04-18 15-36-19.png Görüldüğü gibi html <form alanı enctype özelliği enctype="text/plain" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı text/plain olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki tüm parametreler
param1=value
param2=value param3=value şeklinde alt alta ayrı satırlar halinde gönderilmişlerdir. Not: Html <form alanında dosya girdisi gönderilirken debugging amaçlı encType’ı text/plain olduğunda dosya parametresinde gönderilen dosyanın içerisindeki veri yerine gönderilen dosyanın adı gönderilir. Yararlanılan Kaynaklar
|
|||||
Bu yazı 04.10.2024 tarihinde, saat 05:10:21'de yazılmıştır. 04.10.2024 tarihi ve 02:47:59 saatinde ise güncellenmiştir. | |||||
|
|||||
Yorumlar |
|||||
Henüz yorum girilmemiştir. | |||||
Yorum Ekle | |||||