GET 和POST 请求方式的区别
从语义的角度来回答
get是获取资源。安全的,幂等的,可缓存的。
post是处理资源。非安全的,非幂等的,不可缓存的。
安全性的定义:
不应该引起server端的任何状态变化。
get、head、options这几种请求方式都具有安全性。
幂等性的定义:
同一个请求方法执行多次和执行一次的效果完全相同。
get方式具有幂等性。
可缓存性的定义:
请求是否可以被缓存。
get和head都是可缓存性的。
状态码的含义:
1xx:
2xx:200代表响应成功。
3xx:发生了网络重定向。
4xx:401,404客户端发起的请求有问题。
5xx:501,502代表server端有异常。
连接建立流程:
1)通过TCP的三次握手建立连接。
2)在这条连接上进行http的请求和响应。
3)经历TCP的四次挥手进行连接的释放。
HTTP的特点:
1)无连接
经过了建立连接和释放连接的过程。可以通过HTTP的持久连接方案来进行无连接的补偿。
2)无状态
对于同一个用户,多次进行http请求时,server是不知道是否是同一个用户。可以通过cookie/session来解决。
非持久连接的定义:
每次进行http请求都是重新创建一个TCP连接,经历三次握手和四次挥手。
持久连接的定义:
打开一条tcp通道,多个http请求在同一条tcp通道上进行,在一段time后关闭。
持久连接:
头部字段:
connection:keep-alive,表示客户端期许采用持久连接。
time:20,持久连接持续多久有效。
max:10,这条连接最多发生多少个http请求。
持久连接中,怎样判断一个请求是否结束?
1)通过响应中的content-length字段的值来判断。
2)chunked,比如通过post请求server端给客户端可能会多次响应返回数据,当有多个块通过http的tcp连接传给客户端时,每一个报文都会带有chunked字段,而最后一个块是一个空的chunked。所以可以通过判断哪个chunked是空的来判断前一个网络请求是否结束。
charles抓包原理是怎样的?
利用了http的中间人攻击这个漏洞。
中间人攻击的定义:
当client发送一个http请求时,是由中间人进行hold住,然后中间人假冒client的身份向server端进行同样的请求,然后server端返回结果给中间人,再由中间人返给client。
如果使用http进行请求或者响应时,中间人可以篡改我们发起的请求参数,server端发回的数据也可以被篡改之后再发给client。
网友评论