POST和GET是HTTP请求的两种方式,均可实现将数据从浏览器向服务器发送带参数的请求。html
HTTP请求底层协议都是TCP/IP,因此二者没有本质的区别。浏览器
HTTP:超文本传输协议。全部的WWW文件都必须遵照这个标准。缓存
HTTP向服务器发送请求是TCP链接。HTTP服务器收到请求后向客户端返回一个状态行 好比“HTTP/1.1 200 OK”和安全
HTTP由四部分组成:服务器
【图1.1 HTTP请求结构 图片来自https://www.runoob.com/http/http-messages.html】app
eg:加密
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
这里是空行
------------------------------------------------------------------------------
POST /index.html HTTP/1.1 请求方法 url 协议/版本号 Host: localhost 主机地址 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 发送请求的应用程序名称 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.5 通知服务端能够发送的语言 Accept-Encoding: gzip, deflate 通知服务端能够发送的数据压缩格式 Connection: keep-alive Referer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a> Content-Length:25 Content-Type:application/x-www-form-urlencoded 请求空行 标志着请求头结束,请求正文(请求体)的开始 username=aa&password=1234
GET是获取的意思,顾名思义就是获取信息。url
GET是默认的HTTP请求方法。spa
GET方法把参数经过key/value形式存放在URL里面,若是参数是英文数字原样显示,若是是中文或者其余字符加密(Base64)URL长度通常有限制因此GET方法的参数长度不能太长。因为参数显示再地址栏因此不安全,通常须要保密的请求不使用GET。code
POST是邮件的意思,顾名思义就像一封信同样将参数放在信封里面传输。它用于修改服务器上的数据,通常这些数据是应该保密的,就像信件同样,信的内容只能收信的人看见。例入当用户输入帐号和密码登陆时帐号和密码做为参数经过HTTP请求传输到服务器,这时候确定不能用GET方法将帐号密码直接显示再URL上,这时候就应该用POST方法保证数据的保密性。
总之,二者之间没有本质区别,区别就在于数据存储的位置。各自有适用环境,根据需求选择合适的方法便可。
GET和POST是最经常使用的HTTP请求方式。还有其余的请求方式。我没用过其余的,我只说我知道的把。之后遇到了再补充。