HTTP知识点总结(面试必看)

1 Http和Https的区别:
(1)HTTP 是不安全的,而 HTTPS 是安全的
(2)HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
(3)在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
(4)HTTP 无法加密,而HTTPS 对传输的数据进行加密
(5)HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

2.什么是Http协议无状态协议?怎么解决Http协议无状态协议?

无状态协议对于事务处理没有记忆能力。也就是说,当客户端一次Http请求完成以后后,客户端再发送一次Http请求,Http并不知道当前客户端是一个“老用户”。
可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。

3.URI和URL的区别
URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
(1)Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
(2)URI一般由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源

URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
(1)URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。
(2)采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等

4. Https工作原理
一、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;
二、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);
三、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;
四、发送给服务端,此时只有服务端(RSA私钥)能解密。
五、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。
在这里插入图片描述
5. 一次完整的Http事务是怎么样的一个过程?
当我们在浏览器里输入 www.baidu.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?
以下过程仅是个人的理解:
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

6.Http状态码
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。每一个请求报文发出后,都能收到一个响应报文。响应报文的第一行就是状态行。状态行包含三项内容,HTTP的版本、状态码、以及解释状态码的简单短语。状态码共分为5大类33种。如:
在这里插入图片描述
7.Http的报文结构
Http有两类报文:
(1)请求报文—–从客户端向服务器发送请求报文。
(2)响应报文—–从服务器到客户的回答。
请求报文的结构如下图:
在这里插入图片描述
响应报文的结构如下图:
在这里插入图片描述
Http请求报文和响应报文都是由三个部分组成。可以看出这两种报文的区别就在于开始行不同。
(1)开始行:用于区别是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文的开始行叫做状态行。
(2)首部行:用于说明浏览器、服务器、或报文主体的一些信息。首部可以有好几行,单页可以不用。
(3)实体主体:在请求报文一般必用这个字段,在响应报文中返回请求的内容,也可以不用。
请求报文的第一行“请求行”只有三个内容,方法,请求资源的URL,以及Http的版本。这里的方法是对请求的对象进行的操作,这些方法实际上也就是一些命令。请求报文的类型就是由它采用的方法决定的。

8. Http的请求方法
GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
OPTIONS:查询相应URI支持的HTTP方法。

9.GET和POST的比较
GET - 从指定的服务器中获取数据
POST - 提交数据给指定的服务器处理
GET方法:
使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:
/test/demo_form.jsp?name1=value1&name2=value2
特点:
(1)GET请求能够被缓存
(2)GET请求会保存在浏览器的浏览记录中
(3)以GET请求的URL能够保存为浏览器书签
(4)GET请求有长度限制
(5)GET请求主要用以获取数据
POST方法:
使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器:
POST /test/demo_form.jsp
HTTP/1.1 Host: w3schools.com
name1=value1&name2=value2
特点:
(1)POST请求不能被缓存下来
(2)POST请求不会保存在浏览器浏览记录中
(3)以POST请求的URL无法保存为浏览器书签
(4)POST请求没有长度限制

10. 如何理解Restful
restful其实就是一套编写接口的协议,协议规定如何编写以及如何设置返回值、状态码等信息。
访问一个网站,就代表了客户端和服务端的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态变化”。而这种转化是建立在表现层之上的,所以就是表现层状态变化。

客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

综合上面的解释,我们总结一下什么是RESTful架构:
  (1)每一个URI代表一种资源;
  (2)客户端和服务器之间,传递这种资源的某种表现层;
  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

猜你喜欢

转载自blog.csdn.net/weixin_41809206/article/details/91604113