上行报文即信息
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中 |
× |
√ |