http网络请求的类型有八种,分别是:
get:表示向服务器获取资源,可以携带参数,参数与URL地址之间使用问号(?)隔开,传递的参数长度受到限制,并且会显示在浏览器地址栏中;
post:表示向服务器提交信息,通常用于产生新的数据,如注册表单等,将请求参数封装在http请求数据中,以名称/值的形式出现,可以传递大量的数据,对传递数据的大小没有限制,不会显示在浏览器地址栏中;
put:表示更新服务器的数据,客户端提供更新后的整个资源;
patch:表示更新服务器上的数据,客户端提供更改的属性,可以看做是部分更新,一般是put不够用了才会使用patch请求,使用的比较少;
delete:表示希望删除浏览器特定的数据;
options:发生在跨域的预检请求中,表示向服务器申请跨域提交;
head:表示向服务器发送请求,但是服务器在接收到该请求后,只返回响应头,而不会发送响应内容,一般用于我们只需要查看某个页面的状态时;
trace:回显服务器收到的请求,主要用于检测和诊断(不太常用);
connect:用于建立连接管道,通常在代理场景中使用,网页中很少用到。
get和post的区别:
get请求一般是获取数据的,(也可以提交,但是常见的是获取数据),post请求一般是提交数据的;
get请求在浏览器回退中是无害的,而post请求会再次提交请求;
get请求会把参数暴露在URL地址栏中,所以安全性比较差,请求的参数长度也是有限的,不同的浏览器和服务器不同,一般限制在2~8k之内,最常见是1k以内,post请求没有长度的限制,请求数据是放在body中的;
get请求可以被缓存,post请求不会被缓存;
get请求会被保存在浏览器历史记录栈中,post不会,get请求可以被收藏为书签,因为参数就在URL中,而post不能,因为post的参数不在URL中;
get请求只能进行URL编码(application-x-www-form-urlencoded),post请求支持多种(multipart/form-data等);
底层都是tcp/ip协议,但是get请求产生一个TCP数据包,post请求产生两个TCP数据包;
get请求会把header和data一起发出,服务器响应200,表示数据返回成功,而post请求会先发送header,服务器响应100,浏览器再继续发送data,服务器响应200,表示数据返回成功。