http协议了解

  在web应用中,服务器把网页的HTML代码发送给浏览器,让浏览器显示出来,浏览器和服务器之间的传输协议就是HTTP协议。HTTP是在网络上传输HTML的协议,用于浏览器和服务器之间的通信。

  一个网页打开的流程是浏览器读取服务器发送的HTML源码后,解析HTML,显示页面,然后根据HTML中的各个链接,再发送请求到服务器,拿到相应图片视频js脚本等资源,最后显示出一个完整的页面。

http请求的流程:

1.浏览器向服务器发送http请求

方法:有post(请求支援并附带数据,可能修改服务器上的资源)get(仅请求资源)PUT(增加数据)DELETE(删除数据);

路径:/full/url/path;

域名:由host指定,如   host:www.sina.com.cn

当请求方法为post时,请求还包括一个body,包含用户数据。

2.服务器向浏览器返回HTTP相应

响应代码:

200:成功

3XX:重定向

4XX:客户端发送的请求有错误

5XX:服务器端处理时发生了错误

响应类型:由Content-Type指定。

通常服务器返回的HTTP响应会携带内容,即一个body,如HTML源码。

3.浏览器继续向服务器发送请求,就继续1和2的步骤。

注意:HTTP协议采用了简单的请求-响应的模式,一个HTTP请求只处理一个资源。一个网页中的请求可以是不同的服务器,一个站点可以链接到其他站点。比如图片可以链接于不同的网站。

HTTP格式

HTTP请求和响应都遵循相同的格式,包含Header和Body两个部分。Body可选。

HTTP GET请求格式:(Header一行一个,换行符   )

GET /path HTTP/1.1    //例:GET /books/?sex=man&name=professional HTTP/1.1

Header1:Value1

Header2:Value2

Header3:Value3   //GET可提交的数据量受到URL长度的限制,这个限制不是HTTP协议限制的,是浏览器及服务器限制的。

HTTP POST请求格式:(连续两个换行符时,header部分结束,后面全部为body)

POST /path HTTP/1.1

Header1:Value1

Header2:Value2

Header3:Value3

body data……      //HTTP协议对POST的大小没有限制,但处于安全考虑,服务器会在实现时做一定限制。

HTTP响应格式:

200 ok

Header1:Value1

Header2:Value2

Header3:Value3

body data……

注意:body的数据类型由Content-Type来决定。网页时,body是文本,图片时,body是二进制数据。Content-Encoding存在时,body数据被压缩,常见格式是gzip,此时需解压缩。

条件GET使用的时机:

在客户端之前已经访问过某网站,并打算再次访问该网站的时候。

当再次访问这个网站时候,浏览器向服务器发送请求询问是否在上次询问后更改了页面,服务器根据请求判断响应文件是否有更新,更新了则返回正常响应,没有更新则则返回304 Not Modefied响应,告诉浏览器使用已缓存的上次获取文件。

(本文参考地址:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832653051fd44e44e4f9e4ed08f3e5a5ab550358d000)

原文地址:https://www.cnblogs.com/lionisnotkitty/p/5978050.html