1、HTTP基本知识
1.1 HTTP是什么?
HTTP(HyperText Transfer Protocol)是超文本传输协议,实现网络通信的一种规范。传输的数据并不是计算机底层中的二进制包,而是完整的、有意义的数据,如HTML 文件, 图片文件, 查询结果等超文本,能够被上层应用识别。在实际应用中,HTTP常被用于在Web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密。
总的来说,HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
1.2HTTP常见状态码有哪些?
-
1xx
- 1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
-
2xx
- 2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。
- 「200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
- 「204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。\
- 「206 Partial Content」是应用于 HTTP 分块下载或断电续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。\
-
3xx\
- 3xx 类状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。\
- 「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。\
- 「302 Moved Permanently」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。\
- 301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。\
- 「304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。\
-
4xx\
- 4xx 类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。\
- 「400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。\
- 「403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。\
- 「404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。\
-
5xx
\
- 5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。\
- 「500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。\
- 「501 Not Implemented」表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。\
- 「502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。\
- 「503 Service Unavailable」表示服务器当前很忙,暂时无法响应服务器,类似“网络服务正忙,请稍后重试”的意思。\
1.3 HTTP常见字段有哪些?
1、host 2、content-length 3、connection 4、content-encoding 5、content-type
2、get与psot
2.1 get与post的区别
Get 方法的含义是请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。POST 方法则是相反操作,它向 URL 指定的资源提交数据,数据就放在报文的 body 里。
2.2 GET 和 POST 方法都是安全和幂等的吗?
先说明下安全和幂等的概念: 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。那么很明显 GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。
3、HTTP优缺点
3.1 HTTP优点是什么?
HTTP 最凸出的优点是「简单、灵活和易于扩展、应用广泛和跨平台」。
3.2 HTTP缺点是什么?
HTTP 协议里有优缺点一体的双刃剑,分别是「无状态、明文传输」,同时还有一大缺点「不安全」。
3.3 HTTP/1.1 的性能如何?
HTTP 协议是基于 TCP/IP,并且使用了「请求 - 应答」的通信模式。 长连接、管道网络运输、队头堵塞
4、HTTP与HTTPS
4.1 HTTP 与 HTTPS 有哪些区别?
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。\
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。\
- HTTP 的端口号是 80,HTTPS 的端口号是 443。\
- HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。