最近突然對(duì)這個(gè)話題比較感興趣,就想寫一寫,就當(dāng)作是學(xué)習(xí)筆記了凰兑。
經(jīng)過(guò)搜索發(fā)現(xiàn)總共有兩種方式,一種是GET审丘,一種是POST吏够。
POST請(qǐng)求
1.瀏覽器端代碼
<form action="welcome.php" method="post">
Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
<input type="submit">
</form>
action 屬性 =welcome.php 意思是說(shuō)這個(gè)表單的數(shù)據(jù)要交給服務(wù)器的welcome.php 處理。
method="post" 意思是說(shuō)發(fā)送這個(gè)表單用的是post方法滩报,下面會(huì)談具體談到锅知。
name="name" name="email" 為什么要有這個(gè)name屬性?因?yàn)閕nput是需要我們輸入數(shù)據(jù)的脓钾,那么總得需要一個(gè)保存數(shù)據(jù)的東西售睹。name="name" name="email"的意思就是定義了兩個(gè)變量,一個(gè)是name變量可训,一個(gè)是email變量昌妹,前者用來(lái)存儲(chǔ)用戶輸入的用戶名生真,后者用來(lái)存儲(chǔ)用戶輸入的email地址。
type="submit" 意思是產(chǎn)生一個(gè)確認(rèn)按鈕捺宗,用戶點(diǎn)擊一下柱蟀,就會(huì)發(fā)送一個(gè)包含表單數(shù)據(jù)的請(qǐng)求到服務(wù)器。
2.在開發(fā)者工具中查看POST請(qǐng)求
在name這個(gè)input中我輸入了terry蚜厉,在email這個(gè)input中我輸入了10000@qq.com,然后點(diǎn)擊確認(rèn)按鈕长已,在chrome的network一欄中找到了這個(gè)post請(qǐng)求,它是這個(gè)樣子的昼牛。
https://www.w3schools.com/php/welcome.php
在這個(gè)URL中并沒有攜帶我們輸入的數(shù)據(jù)术瓮,那么這些數(shù)據(jù)在哪里呢?在Header的Form Data里面可以看到,如下圖:
3.服務(wù)器端是如何獲取瀏覽器端的表單數(shù)據(jù)的贰健?
在 welcome.php 中通過(guò) $_POST['name'] 和 $_POST['email']這兩個(gè)變量即可 獲取表單中的內(nèi)容胞四。
GET請(qǐng)求
1.瀏覽器端代碼
<form action="welcome.php" method="get">
Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
<input type="submit">
</form>
和post請(qǐng)求差不多,唯一不同的地方就在于method伶椿,一個(gè)是POST辜伟,一個(gè)是GET。
2.在開發(fā)者工具中查看GET 請(qǐng)求
在name這個(gè)input中我輸入了terry脊另,在email這個(gè)input中我輸入了10000@qq.com,然后點(diǎn)擊確認(rèn)按鈕导狡,在chrome的network一欄中找到了這個(gè)get請(qǐng)求,它是這個(gè)樣子的偎痛。
https://www.w3schools.com/php/welcome.php?name=terry&email=10000%40qq.com
在這個(gè)URL中可以看到表單中的數(shù)據(jù)旱捧,其中?號(hào)以后就是具體的表單參數(shù)踩麦,它們是以“變量名和值”成對(duì)出現(xiàn)的枚赡,每個(gè)“變量名和值”之間以&分隔開。同樣谓谦,我們可以在這個(gè)請(qǐng)求的Header中看到它們贫橙。
3.服務(wù)器端是如何獲取瀏覽器端的表單數(shù)據(jù)的?
在welcome.php中通過(guò)$_GET["name"]和$_GET["email"]來(lái)獲取表單中的數(shù)據(jù)茁计。
OK料皇,總結(jié)一下谓松,不管是POST請(qǐng)求還是GET請(qǐng)求星压,表單數(shù)據(jù)最后都是以
變量-值 這樣的形式傳遞給服務(wù)器的,而且chrome瀏覽器是可以捕獲這些“變量-值”的鬼譬,貌似不能直接修改這些變量的值娜膘,不過(guò)聽說(shuō)有一個(gè)叫BurpSuite的東西很好用,可以修改請(qǐng)求中的數(shù)據(jù)优质。原理是很簡(jiǎn)單竣贪,就是把瀏覽器的代理地址設(shè)置為127.0.0.1:8080军洼,而BurpSuite是會(huì)監(jiān)聽這個(gè)地址的,然后BurpSuite把監(jiān)聽到的數(shù)據(jù)交給用戶演怎,用戶可以隨便修改數(shù)據(jù)匕争,然后再把這個(gè)數(shù)據(jù)發(fā)送給目標(biāo)服務(wù)器。