上行报文即信息

HTTP的请求是成对儿的,有request就有response。我们称之为“上行请求”和“下行响应”。不管是哪种请求,都会“报头”+“报文”的形式传输数据

一般上行请求的上行报文是空的,下行响应的下行报文是html的代码

什么是报头?用来存放一些信息,比如客户端的信息,访问时间,cookie等等

POST请求_数据

 

 

上行请求一般是没有报文的,所以下行报文一般都是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的上行报文中

POST请求_数据_02

 

 

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请求_get请求_03POST请求_表单_04

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中



×