关于HTTP中GET和POST的认识

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:get和 post
get–>从指定的资源获取数据
post–>向指定的资源提交要被处理的数据
get方法:,查询字符串(名称/值对)是在 get请求的 URL 中发送的,及get把参数包含在URL中

http://www.baudu.com?name1=value1&name2=value2&.....

post:查询字符串(名称/值对)是在 post 请求的 HTTP 消息主体中发送的,及post通过request body传递参数。(见w3school)

POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2

关于GET和POST的区别

get使用URL进行传参 post使用request body 进行
get在浏览器回退/刷新时时无害 post会再次请求
get请求的参数被完整保留在浏览器历史记录里,而POST中的参数不会被保留
get请求的URL是有长度限制的 post没有
get请求的参数会被保存在浏览器的历史记录中 post的参数不会保留
post发送的数据会更大(get限制url长度)
post能发送更多的数据类型(get只能发送ASCII字符)
post比get安全(不会作为URl的一部分 不会被缓存 )

关于get请求和post请求过程

get请求比post请求快
post请求包含更多的请求头 最重要的一条是post在真正接收数据之前会将请求头发送给服务器进行确认 然后在进行真正发数据

get请求:

  1. 浏览器请求tcp连接
  2. 服务器答应进行tcp连接
  3. 浏览器确认,并发送get请求头和数据
  4. 服务器返回200 OK响应

post请求:

  1. 浏览器请求tcp连接
  2. 服务器答应进行tcp连接
  3. 浏览器确认,并发送post请求头
  4. 服务器返回100 Continue响应
  5. 浏览器发送数据
  6. 服务器返回200 OK响应

理解误区

1 get和post与数据传输是没有任何关系的
get和post是由HTTP协议定义的。在HTTP协议中,Method和Data(URL, Body, Header)是正交的两个概念,也就是说,使用哪个Method与应用层的数据如何传输是没有相互关系的。

2 get和post本质上没有区别
get和post是HTTP发送请求的两种方式.
HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP.
也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

3 HTTP没有规定get和post的长度
HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。而对于URL长度上的限制,主要是浏览器和WEB服务器造成的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值