上行报文即信息
HTTP的请求是成对儿的,有request就有response。称之为“上行请求”和“下行响应”。不管是哪种请求,都会“报头”+“报文”的形式传输数据
一般上行请求的上行报文是空的,下行响应的下行报文是html的代码
报头:用来存放一些信息,比如客户端的信息,访问时间,cookie等等
比如我们访问baidu.com网站,然后就能得到相关请求的报头和报文
上行请求一般是没有报文的,下行报文一般都是html代码
使用GET请求的时候,所有的信息参数都在$_GET数组中,POST也是有一个$_POST数组来维护POST请求的信息
POST请求提交表单
url中输入网址携带参数的请求都是GET请求,如果想要发送POST请求,需要借助表单来发起
例:在浏览器中发起POST请求
<form action="01.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>
此时表单一旦提交了,页面会跳转到05.php,此时的url地址中并没有我们提交的信息(query string),数据都在HTTP的上行报文中
在.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的实际地址
get和post的使用场景
- 如果你的程序是通过用户输入查询检索的时候,一般用GET,便于分享;
- 如果你的信息是一些比较敏感的,比如用户的注册名称,密码,身份证号等等一些敏感的信息,一定要使用post,这样安全。
总结:GET请求本意就是“得到”的意思,POST请求本意就是“发送”的意思。所以当你的目的是得到更多信息的时候,使用GET,比如我们要根据id查询某一条信息。如果你的目的是提交,发送,使用post。比如你要提交自己的信息(姓名,年龄,身高,体重...)
面试题
GET请求就是HTTP的request,POST请求就是HTTP的response。这样的说法正确吗?为什么?
这种说法是完全错误的,GET请求和POST请求都是上行的请求和下行响应的,也就是都是向服务器发送请求的(request),然后服务器进行对应的请求响应(response)