HTTP主要特点:
(1)支持客户/服务器模式
(2)简单快捷
(3)灵活
(4)无连接
(5)无状态
请求响应步骤:
(1)客户端连接到web服务器
(2)发送HTTP请求
(3)服务器接收请求并返回HTTP响应
(4)释放TCP连接
(5)客户端浏览器解析HTML内容
浏览器键入URL,按下回车之后经历的流程:
(1)DNS解析
(2)TCP连接
(3)发送HTTP请求
(4)服务器处理请求并返回HTTP报文
(5)浏览器解析渲染页面
(6)连接结束
HTTP状态码:
(1)200 OK:请求已正常处理。
(2)400 Bad Request:服务器端无法理解客户端发送的请求,请求报文中可能存在语法错误。
(3)401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC认证,DIGEST认证)的认证信息。
(4)403 Forbidden:不允许访问那个资源。该状态码表明对请求资源的访问被服务器拒绝了。(权限,未授权IP等)
(5)404 Not Found:服务器上没有请求的资源。路径错误等。
(6)500 Internal Server Error:貌似内部资源出故障了。该状态码表明服务器端在执行请求时发生了错误。也有可能是web应用存在bug或某些临时故障。
(7)503 Service Unavailable:抱歉,我现在正在忙着。该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求。
GET请求和POST请求的区别:
get请求产生的url可以作为标签
get请求比post更不安全,因为参数暴露在url上面,因此不能用来传递敏感信息,post的参数放在request body中
get请求会被浏览器主动cache,post请求不会,除非手动设置
get请求只支持url编码,post支持多种编码
get请求在url中传递的参数是有限制的,而post没有
对参数的数据类型,get只接受ASCll字符,post没有限制
get请求产生一个tcp数据包,post请求产生两个数据包(Firefox例外),post请求先发送header再发送data
小结:
get和post本质上并没有区别,他们是HTTP协议中的两种发送请求的方法。HTTP是基于tcp/ip的关于数据如何在万维网中如何通信的协议。get和post由于HTTP的规定和浏览器的限制,导致他们在应用过程中体现出一些不同。
HTTPS
组成HTTPS的协议:HTTP协议和SSL/TLS协议。HTTP协议就不用讲了,而SSL/TLS就是负责加密解密等安全处理的模块,所以HTTPS的核心在SSL/TLS上面。
HTTP和HTTPS的区别:
https加密传输,http明文传输
https默认443端口,http默认80端口
https需要用到CA证书,http不需要
https=http+加密+认证+完整性保护,较http更安全