HTTP篇
1.什么是HTTP/HTTPS
?
HTTP
指的是超文本传输协议,是一种在浏览器客户端或其他程序中发送请求与服务器响应过程中的应用层通信协议HTTPS
是由HTTP
+SSL
构成的一种可以进行加密传输与身份认证的一种安全通信通道
2.HTTP
与HTTPS
有什么区别?
HTTP
- 使用明文传输信息,安全性差
- 默认使用
80
端口号 - 连接是无状态的
HTTPS
- 由
HTTP
+SSL
构成,对信息进行加密传输,需要进行身份认证,安全性高 - 默认使用
443
端口号 - 需要到
ca
申请证书,需要承担额外的费用
- 由
3.HTTP
常见的响应状态码有哪些?
1**
信息响应状态码100
客户端必须继续发送请求*
101
客户端要求服务器根据请求转换HTTP
协议*
2**
成功状态码200
请求成功*
201
请求成功并创建了新的资源*
202
接受和处理,但尚未完成处理203
返回信息不确定或不完整204
返回信息为空*
205
服务器完成了请求,但是用户代理必须复位当前已浏览过的文件206
服务器完成了用户的部分get
请求
3**
重定向状态码300
请求的资源可以在多处获得301
删除请求数据*
302
在其他地址发现了请求数据*
303
建议用户访问其他URL
或者更换访问方式304
用户请求的资源未被修改,可以使用缓存的资源*
305
请求的资源必须从服务器指定的URL
获取306
前一版本中HTTP
使用的代码,现版本不再使用307
请求的资源被临时删除
4**
客户端错误状态码400
请求错误,服务器无法理解*
401
请求授权失败*
402
保留有效chargeto
头响应403
禁止访问*
404
请求资源未找到*
405
用户在request-line
字段定义的方法不允许406
请求资源不可访问407
用户必须首先在代理服务器中得到授权408
客户端没有在用户指定的时间内完成请求409
当前资源的状态请求无法完成410
服务器上不再存在此资源并且没有参考地址411
服务器拒绝用户定义的content-length
属性请求412
请求头中存在字段错误413
请求的资源大于服务器允许的大小414
请求的URL
长度大于服务器允许的长度415
请求资源不支持请求项目格式416
请求中包含range
请求头字段,但请求资源范围内没有range
指示值417
服务器不满足expect
请求头指定的期望值
5**
服务端错误状态码500
服务器内部错误*
501
服务器不支持请求的函数502
服务器暂时不可用*
503
服务器过载或暂停维护*
504
关口过载,服务器使用另外的关口响应请求,等待时间设定值较长505
服务器不支持或拒绝请求头中指定的HTTP
版本
4.常见的HTTP
请求有哪些?有什么区别?
请求方法 | 作用 |
---|---|
get |
获取资源,向服务器查询信息 |
post |
将包含在请求体中的数据向指定的地址进行提交 |
head |
返回的响应中没有具体内容,通常用于获取报头 |
put |
从客户端发送数据以取代指定文档的内容 |
delete |
请求服务器删除指定内容 |
connect |
要求在与代理服务器通信时建立隧道,使用隧道进行TCP 通信 |
options |
询问支持的请求方法,用来跨域请求 |
trace |
回显服务器收到的请求,用于测试或诊断 |
- 上述请求中,
get
与post
请求更加常用 get
请求传参通常直接跟在URL
地址后面以?
的方式进行拼接,并且将多个参数用&
进行连接,使用get
方式传递的参数具有大小限制,这通常是因为对URL
长度有限制,使用get
请求,在地址栏能够看到提交的参数信息,通常意味着存在安全风险
5.什么是三次握手与四次挥手?
- 三次握手指的是客户端与服务端之间进行通信连接的三个步骤
- 第一次握手是用来建立连接,客户端发送连接请求报文,发送规定的数据包
- 第二次握手是服务器端表示接收到连接请求报文,并回传规定的数据包
- 第三次握手是客户端接收到了服务端回传的数据包之后,给服务端再次发送数据包
- 四次挥手指的是当前连接请求已经结束,需要断开此次连接
- 第一次挥手是客户端对服务端发起断开请求
- 第二次挥手是服务端确认收到这次的断开请求
- 第三次挥手是服务端表示已经断开连接
- 第四次挥手是客户端表示已经断开连接
6.详细说说get
请求与post
请求有什么区别?
区别 | get |
post |
---|---|---|
应用场景 | 请求通常不会影响服务端资源 | 会影响服务端资源 |
参数传递 | 通常使用明文的方式在URL 末尾使用? 拼接参数,多个参数使用& 连接 |
将参数放在请求体中进行发送 |
安全性 | 不安全 | 安全 |
缓存 | 一般会缓存 | 一般不会缓存 |
请求长度 | 限制请求参数长度 | 不受限制 |
参数类型 | 使用名值对的方式 | 使用名值对,json 数据格式等 |
报文格式 | 报文中实体部分为空 | 实体部分用来存放请求参数 |
7.详细说说post
请求与put
请求有什么区别?
post |
put |
---|---|
通常会增加数据库中数据的长度或类别,它会创建一个新的数据 | 通常用来更新服务器的部分数据,并不会更改原数据库中的数据长度 |
8.常见的HTTP
请求头与响应头有哪些?
- 请求头
name |
description |
---|---|
accept |
浏览器能够处理的内容类型 |
accept-charset |
浏览器能够显示的字符集 |
accept-encoding |
浏览器能够处理的压缩编码 |
accept-language |
浏览器当前设置的语言 |
connection |
浏览器与服务器之间的连接类型 |
cookie |
当前页面设置的任何cookie |
host |
当前请求的页面所在的域 |
referer |
当前浏览器发出请求的页面的URL |
user-agent |
浏览器的用户代理字符串 |
- 响应头
name |
description |
---|---|
date |
消息发送的时间 |
server |
服务器名称 |
connection |
浏览器与服务器之间连接的类型 |
cached-control |
控制浏览器的缓存 |
content-type |
表示后面的文档属于什么MIME 类型 |
content-type
有如下类型application/x-www-form-urlencoded
可以提交表单类型数据,以名值对的格式applicati