HTTP是一个基于TCP/IP来传递数据的通信协议。
1.GET和POST请求的区别?
a: GET/POST本质上都是TCP链接,GET传body和POST拼参数,理论上都是可行的。
b: 实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数。
请求安全定义
一个 HTTP方法是安全的,是指这是个不会修改服务器的数据的方法,这是一个对服务器只读操作的方法。比如GET,HEAD 和 OPTIONS。
GET:幂等、可缓存。
POST:不幂等、不可缓存
幂等: 指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。按照RFC,PUT,DELETE和GET方法都是幂等的。就算方法具有只读的语义,服务器也能更改它自己的数据,比如:记录这次请求的日志或者数据分析。安不安全的定义是这个方法需不需要服务器修改数据。客户端不需要服务端修改数据,也就不会给服务端造成不必要的负担。浏览器调用安全的方法不用考虑会给服务端造成什么危害,这样,服务端就能允许客户端预加载资源。
c:
GET请求,浏览器会把httpheader和data一并发送出去,服务器响应200(返回数据)。
POST请求,浏览器先发送header,服务器响应100continue,浏览器再发送data,服务器响应200 OK(返回数据)。
备注:POST需要两步,时间上消耗的要多一点。
在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
d:请求参数
3、常见的响应头