HTTP详解

简介: HTTP详解

HTTP


1、什么是HTTP协议?


HTTP协议是超文本传输协议,是计算机之间传输超文本数据的约定和规范,基于【请求/响应】模式、无连接无状态、基于TCP协议的应用层协议。


2、HTTP协议特点


1、简单快速:客户向服务器请求服务时,只需要传送请求方法和路径。 请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务的程序规模小,因而通信速度很快。


2、灵活:HTTP允许传输任意类型的数据对象。


正在传输的类型由Content-Type字段标记


3、无连接:每次连接只处理一个请求。服务器处理完客户的请求,并收到客户端的应答后,即断开连接。


缺点:无法处理乱序和重复的IP数据报。


优点:简单、高效


4、无状态:指协议对事务处理没有记忆能力。


服务器不知道客户端是什么状态,即我们给服务器发送HTTP请求之后,服务器根据请求,会给我们发送数据,但是发送完不会记录任何信息。


5、支持B/S(浏览器/服务器)及C/S(客户端/服务器)模式


6、默认端口80


7、基于TCP协议


3、怎么解决无状态、无连接?


怎么解决无连接? Keep-Alive功能使客户端到服务器的连接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了重新建立连接。


怎么解决无状态?


方法1、使用Cookie将状态信息保存在客户端。


方法2、使用Session将状态信息保存在服务端。


4、HTTP请求/响应步骤


1. 客户端连接到Web服务器 一个HTTP客户端(即浏览器),与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如:http://www.baidu.com


2. 客户端向服务器发送一个请求报文。


- 请求报文包含三个部分:【请求行、首部行、请求内容实体】


3. 服务器接收请求并返回HTTP响应报文。


- 响应报文包含三个部分:【状态行、首部行、响应内容实体】


4. 客户端将返回的内容解析并呈现,断开连接。


客户端首先解析状态行,查看表明请求是否成功的状态代码。


然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。


客户端读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。


5、请求报文与响应报文格式


请求报文包含三个部分:【请求行、首部行、请求内容实体】


其中,请求行包含:请求方法、请求资源的URL、HTTP协议版本


网络异常,图片无法展示
|


响应报文包含三个部分:【状态行、首部行、响应内容实体】


其中,状态行包含:HTTP协议版本、状态码、状态码描述语


网络异常,图片无法展示
|


6、常见的HTTP方法


  • GET:请求从服务器获取资源,这个资源可以是静态的文本、页面、图片、视频等。


  • POST:它向URI指定的资源提交数据,数据就放在报文的body里。


  • PUT:传输文件,报文主题中包含文件内容,保存到对应URI位置;


  • HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效;


  • DELETE:删除对应URI位置的文件,与PUT方法相反;


  • OPTIONS:查询相应URI支持哪些HTTP请求方法。


  • PATCH:对资源进行部分修改。//PUT也可以用于修改资源,但是只能完全替代原始资源,PATCH允许部分修改。


  • TRACE:要求目标服务器返回原始HTTP请求的内容。它可用来查看中间服务器对HTTP请求的影响。


  • CONNECT:用于某些代理服务器,它们能把请求的连接转化为一个安全隧道。


7、GET和POST区别?


1. GET用于获取资源;而POST用于传输实体主体。 2. GET方法不会改变服务器状态,是安全的;POST的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。 3. GET是幂等的;POST不是。


安全概念:请求方法不会破坏服务器上的资源。 幂等概念:多次执行相同的操作,结果都是相同的。


第二种回答:


1、GET参数通过URL传递,POST放在request body中 2、GET请求在URL中传递的参数是有长度限制的,而POST没有 3、GET比POST更不安全,因为参数直接暴露在URL中,所以不能用来传递敏感信息 4、GET请求只能进行URL编码,而POST支持多种编码方式 5、GET请求浏览器会主动cache,而POST支持多种编码方式 6、GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留 7、GET和POST本质上就是TCP连接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致它们在应用过程中体现出一些不同 8、GET产生一个TCP数据包;POST产生两个TCP数据包


8、状态码


网络异常,图片无法展示
|


200 OK:请求被正常处理


204 No Content:请求被受理单没有资源可以返回;即响应头没有body数据


206 Partial Content:响应返回的body数据并不是资源的全部


301 Moved Permanently:表示永久重定向,说明请求的资源已经不存在了,需改用新的URL再次访问


302 Found:临时重定向,说明请求访问的资源还在,但暂时需要用另一个URL来访问


304 Not Modified缓冲重定向,用于缓冲控制


400 Bad Request:表示客户端请求的报文有错误,笼统的错误


403 Forbidden:表示服务器禁止访问资源(并不是客户端的请求出错)


404 Not Found表示请求的资源在服务器上不存在或找不到


500 Internal Servel Error:服务器内部错误,笼统的错误


501 Not Implemented:客户端请求的功能还不支持


502 Bad Gateway:通常是服务器作为⽹关或代理时返回的错误码,表示服务器⾃身⼯作正常,访问后端服务器发⽣了错误


503 Service Unavailable:表示服务器当前很忙,暂时⽆法响应服务器


哪些情况需要做301重定向?


网页开发过程中,时常会遇到网站目录结构的调整,将页面转移到一个新地址;网页扩展名的改变,这些变化都会导致网页地址发生改变,此时用户收藏夹和搜索引擎数据库中的旧地址是一个错误的地址,访问之后会出现404页面,直接导致网站流量的损失。或者是我们需要多个域名跳转至同一个域名,例如本站主站点域名为 www.conimi.com ,而还有一个域名 www.nico.cc,由于对该域名设置了301重定向,当输入www.nico.cc 时,自动跳转至 www.conimi.com 。


301重定向有什么优点?


有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中。例如 www.conimi.com和 conimi.com 是两个不同的域名,但是指向的内容完全相同,搜索引擎会对两个域名收录情况不同,这样导致网站权重和排名被分散;对conimi.com 做301重定向跳转至www.conimi.com 后,权重和排名集中到www.conimi.com,从而提升自然排名。


302重定向又是什么鬼?


302重定向(302 Move Temporarily),指页面暂时性转移,表示资源或页面暂时转移到另一个位置,常被用作网址劫持,容易导致网站降权,严重时网站会被封掉,不推荐使用。


9、字段


  • Host:客户端发送请求时,指定服务器的域名


  • Connection:用于客户端要求服务器使用TCP持久连接


  • Content-Length:服务器返回数据时,表明本次回应的数据长度


  • Content-Type:服务器返回数据时,表明本次数据的格式


  • Content-Encoding:服务器返回数据时,表明本次数据压缩方法


Host:www.A.com //C -> S 
Content-Length:1000 //S -> C 
Keep-Alive:timeout=10,max=500 //S -> C 
Connection:Keep-Alice 
Content-Type:text/html; charset=utf-8 //S -> C 
Accept-Encoding:gzip, deflate //C -> S 
Content-Encoding:gzip //S -> C
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
3月前
|
网络协议 安全 网络安全
2.什么是HTTP
2.什么是HTTP
62 0
|
3月前
|
网络协议 安全 网络安全
什么是HTTP
什么是HTTP
64 0
|
2月前
|
网络协议 Linux Shell
http“超级应用与理解”
http“超级应用与理解”
|
3月前
|
Web App开发 缓存 网络协议
1.HTTP 前世今生
1.HTTP 前世今生
31 0
|
6月前
|
JSON 缓存 前端开发
介绍 HTTP
本篇文章主要介绍了HTTP报文、HTTP请求方法、HTTP响应的状态码、Cookie技术
介绍 HTTP
|
网络协议 安全
什么是http
什么是http
96 0
|
存储 缓存 网络协议
|
数据采集 存储 Web App开发
51 张图助你彻底掌握 HTTP!
51 张图助你彻底掌握 HTTP!
|
移动开发 网络协议 前端开发
xxxxHub 都用上了 HTTP/2 ,它牛逼在哪?
这次主要介绍了关于 HTTP/2 是如何提示性能的几个方向,它相比 HTTP/1 大大提高了传输效率、吞吐能力。
xxxxHub 都用上了 HTTP/2 ,它牛逼在哪?

热门文章

最新文章