上行報文即信息
HTTP的請求是成對兒的,有request就有response。我們稱之為“上行請求”和“下行響應”。不管是哪種請求,都會“報頭”+“報文”的形式傳輸數據
一般上行請求的上行報文是空的,下行響應的下行報文是html的代碼
什么是報頭?用來存放一些信息,比如客戶端的信息,訪問時間,cookie等等
上行請求一般是沒有報文的,所以下行報文一般都是html代碼
我們使用GET請求的時候,所以的信息參數都在$_GET數組中,POST也是有一個$_POST數組來維護我們的POST請求的信息
POST請求提交表單
我們在url中輸入網址攜帶參數的請求都是GET請求,如果想要發送POST請求,需要借助表單來發起
<form action="1.php" method="post"> <p> <input type="text" name="userName" placeholder="請輸入用戶名"> </p> <p> <input type="password" name="password" placeholder="請輸入密碼"> </p> <p> <input type="radio" name="sex" value="男">男 <input type="radio" name="sex" value="女">女 </p> <p> <input type="submit"> </p> </form>
此時我們的表單一旦提交了,頁面會跳轉到1.php,此時的url地址中並沒有我們提交的信息(query string),數據到哪了?
都在我們HTTP的上行報文中
formData就是上行請求攜帶的參數
在1.php中可以通過$_POST來獲取這些參數
<?php // 得到用戶的數據 $userName = $_POST["userName"]; $password = $_POST["password"]; $sex = $_POST["sex"]; // 反饋結果 echo "接收到的表單信息為:<br/>"; echo "用戶名:".$userName."<br/>"; echo "密碼:".$password."<br/>"; echo "性別:".$sex."<br/>"; ?>
POST請求的優缺點
優點:
- 安全,URL不會在暴露我們的信息,瀏覽器會保存我們的上下報文,一旦發送過請求后,立即就會銷毀,任何人都無法通過讀你報文來竊取你的信息
- 傳遞的數據長!理論上POST請求可以發送無窮大的信息,所以,圖片、文件的上傳都是通過POST請求發送的
缺點:
- POST請求不方便信息共享,如果我們需要分享一篇博客,想把url發送給朋友,如果使用post請求,參數則無法分享,因為url中無法攜帶任何的頁面信息,僅僅只有url的實際地址
什么時候使用POST?什么時候使用GET?
如果程序是通過用戶輸入查詢檢索的時候,一般用GET,便於分享;
如果信息是一些比較敏感的,比如用戶的注冊名稱,密碼,身份證號等等一些敏感的信息,一定要使用post,這樣安全。
GET請求本意就是“得到”的意思,POST請求本意就是“發送”的意思。所以當你的目的是得到更多信息的時候,使用GET,比如我們要根據id查詢某一條信息。如果你的目的是提交,發送,使用post。比如你要提交自己的信息(姓名,年齡,身高,體重...)
GET請求就是HTTP的request,POST請求就是HTTP的response。這樣的說法正確嗎?為什么?
這種說法是完全錯誤的,GET請求和POST請求都是上行的請求和下行響應的,也就是都是向服務器發送請求的(request),然后服務器進行對應的請求響應(response)
請求方式 |
數據位置 |
是否方便分享 |
是否安全 |
GET |
URL:1.php?name=小明&age=1 |
√ |
× |
POST |
上行報文的formData中 |
× |
√ |