一、HTTP协议
1、什么是HTTP报文?
HTTP报文是HTTP协议在客户端和服务端之间传送的数据块。
2、HTTP报文由哪三部分组成?
HTTP报文由起始行(start line)、头部(header)和主体(body)三部分组成,起始行是对报文进行的描述,头部包含报文的一些属性,主体包含报文的数据(可选,非必选)。
3、HTTP报文分为哪两类?
HTTP报文可以分为:请求报文(request message)和响应报文(response message)。当客户端向服务端发送请求时,就是发送请求报文;当服务端向客户端返回数据时,就是返回响应报文。
4、HTTP常见的请求方法有哪些?
方法 描述 是否包含主体
GET 从服务端获取指定信息 否
POST 向服务端发送待处理的数据 是
HEAD 从服务端获取指定信息的头部 否
PUT 向服务端发送数据并替换服务端上指定的数据 是
OPTIONS 查询针对请求URL指定的资源支持 否
DELETE 从服务端删除指定数据 否
TRACE 沿着目标资源的路径执行消息环回测试 否
5、HTTP常见的状态码有哪些?
状态码 原因短语 含义
100 Continue 说明收到了请求的初始部分,请客户端继续。
101 Switching Protocols 说明服务端正在根据客户端的指定,将协议切换成Update头部所列的协议。
200 OK 请求没有问题,主体包含了所请求的数据。
201 Created 用于在服务端创建数据的请求(比如PUT),Location头部给出了创建数据的URL。
202 Accepted 请求已经被接受,但服务端还没有对其执行任何动作。
203 Non-Authoritative Information 数据已经正常地返回,但一些响应报文头部可能不正确。
204 No Content 响应报文中包含起始行和头部,没有主体部位。客户端应该继续显示原来的数据。
205 Reset Content 仍然没有主体部分,但客户端应该清除它所显示的数据。
206 Partial Content 成功执行了一部分或者一个范围内的请求。
300 Multiple Choices 客户端请求了一个实际指向多个资源的URL,服务端可以在Location头部包含首选URL。
301 Moved Permanently 请求的URL已经被移除,响应报文中的Location头部包含现在资源的URL。
302 Found 类似于301,但新的URL应该被视为临时性的,将来的请求仍应是老的URL。
303 See Other 类似于301,但主要目的是允许POST请求的响应将客户端定向到某个资源上。
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求时,服务端告知客户端,原来缓冲的数据还可以继续使用。
305 Use Proxy 用来说明必须通过代理进行访问,代理的位置在Location头部给出。
306 - 未使用
307 Temporary Redirect 类似于301,但客户端应该使用Location头部给出的URL临时请求,将来的请求仍应是老的URL。
400 Bad Request 客户端发出的是错误请求,服务器无法理解。
401 Unauthorized 请求要求客户端的身份认证
402 Payment Required 保留,以作将来使用
403 Forbidden 服务端理解客户端的请求,但是拒绝执行此请求。
404 Not Found 服务端无法找到客户端所请求的URL。
405 Method Not Allowed 服务端不支持客户端请求的方法。
406 Not Acceptable 服务端无法根据客户端请求的类型完成请求。
407 Proxy Authentication Required 类似于401,但用于要求对资源进行认证的代理服务器。
408 Request Timeout 服务端等待客户端发送的请求时间过长,服务端可以响应此状态码,并关闭连接。
409 Conflict 客户端的请求可以在资源上引发一些冲突,服务端可以发送此状态码。
410 Gone 类似于404,但是服务端曾经拥有过此资源。
411 Length Required 服务端要求客户端的请求报文中包含Content-Length头部时,使用此状态码。
412 Precondition Failed 客户端发起了条件请求,并且其中一个条件失败时,使用此状态码。
413 Request Entity Too Large 客户端发送的主体部分比服务端能够或者期望处理的要大时,使用此状态码。
414 Request URI Too Large 客户端发送的请求URI比服务端能够或者期望处理的要长时,使用此状态码。
415 Unsupported Media Type 服务端无法理解或无法支持客户端所发的内容类型是,使用此状态码。
416 Requested Range Not Satisfiable 客户端请求指定资源的范围无效或无法满足。
417 Expectation Failed 服务端无法满足客户端的Expect头部。
500 Internal Server Error 服务端发生内部错误,无法完成请求。
501 Not Implemented 服务端不支持客户端的请求,无法完成请求。
502 Bad Gateway 作为网关或代理的服务器,从远端服务端接收到了一个无效的请求。
503 Service Unavailable 用来说明服务端现在无法为请求提供服务,但是将来可以。什么时候资源会变为可用可包含在服务端的Retry-After头部中。
504 Gateway Timeout 类似于408,只是作为网关或代理的服务器,未及时从远端服务端获取请求。
505 HTTP Version Not Supported 服务端不支持请求的HTTP协议的版本,无法完成处理。
6、HTTP的缺点与HTTPS
a、通信使用明文不加密,内容可能被窃听
b、不验证通信方身份,可能遭到伪装
c、无法验证报文完整性,可能被篡改
HTTPS就是HTTP加上SSL加密处理(一般是SSL安全通信线路)+认证+完整性保护
7、HTTP优化
利用负载均衡优化和加速HTTP应用
利用HTTP Cache来优化网站