GET和POST的区别
可缓存/不可缓存
get请求是幂等的,用于对服务器资源不会产生影响的场景(请求一个网页的资源),get请求的数据是可以缓存的;
post请求不幂等,用于对服务器资源会产生影响的情景,查询对数据有副作用(注册用户这一类),是不可缓存的。
传参
get传参,参数在url中
post传参,参数在请求体中
安全性
get较为不安全;
post较为安全;
准确的说两者都不安全,都是明文传输的,在路过公网的时候都会被访问到,不管是url还是header还是body,都会被访问到,要想做到安全,就需要使用https。
参数长度
get参数长度有限,是比较小的;
post传参长度不受限制。
发送数据
post传参发送两个请求包,一个是请求头一个是请求体,请求头发送后服务器进行验证,验证通过就会给客户端发送一个100-continue的状态码,然后就会发送请求体。
字符编码
get在url上传输的时候只允许ASCII编码。
浏览器和服务器对GET方法中URK长度限制的范围
IE浏览器URL最大限制为2083个字符
Firefox浏览器URL最大限制为65536个字符
Safari浏览器URL最大限制为80000个字符
Opera浏览器URL最大限制为190000个字符
Google浏览器URL最大限制为8182个字符
主流的服务器对get方法中url的长度限制范围:
- Apache (Server):能接受最大url长度为8192个字符。
- Microsoft Internet Information Server(IIS):能接受最大url的长度为16384个字符。
所以说浏览器URL最长不能超过2083个字符才能在所有浏览器和服务器正常工作。
常见的HTTP请求方式
- GET:向服务器获取数据
- POST:将实体提交到指定的资源,通常会造成服务器资源修改
- PUT:上传文件,更新数据
- DELETE:删除服务器上的对象
- HEAD:获取报文首部,与GET对比,不返回报文主体部分
- OPTIONS:询问支持的请求方法,用来跨域请求
- CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行TCP通信
- TRACE:显示服务器收到的请求,主要用于测试或者诊断
DNS协议
DNS是域名系统系统的缩写,提供的是一种主机名到IP地址的转换服务,是一个由分层的DNS服务器组成的分布式数据库,定义了主机如何查询到这个分布式数据库的方式的应用层协议。能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS服务器解析域名的过程
- 首先在浏览器的缓存中查找对应的IP地址,查到直接返回,查不到下一步
- 将请求发送给本地DNS服务器,在本地域名服务器缓存中查询,查到返回,查不到下一步
- 本地DNS服务器想根域名服务器发送请求,根域名服务器会返回一个所查询的顶级域名服务器地址
- 本地DNS服务器向顶级域名服务器发送请求,接受请求的服务器查询自己的缓存,如果有记录,就返回查询结果,如果没有就