HTTP协议经典面试题整理及答案详解

不管你是Java、PHP开发者,仍是运维人员,只要从事互联网行业,面试时均可能被问到HTTP协议相关知识。历时多天的呕心沥血,为你总结了HTTP协议的经典面试题。因为涉及内容比较繁杂不方便记忆,建议收藏起来,时不时看一遍或者面试前突击复习。html

什么是HTTP报文?

HTTP报文是HTTP协议在客户端和服务端之间传送的数据块。面试

HTTP报文由哪三部分组成?

HTTP报文由起始行(start line)、头部(header)和主体(body)三部分组成,起始行是对报文进行的描述,头部包含报文的一些属性,主体包含报文的数据(可选,非必选)。缓存

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。服务器

HTTP报文分为哪两类?

HTTP报文能够分为:请求报文(request message)和响应报文(response message)。当客户端向服务端发送请求时,就是发送请求报文;当服务端向客户端返回数据时,就是返回响应报文。好比,获取一个文本须要的请求报文和响应报文:微信

HTTP常见的请求方法有哪些?

方法 描述 是否包含主体
GET 从服务端获取指定信息
POST 向服务端发送待处理的数据
HEAD 从服务端获取指定信息的头部
PUT 向服务端发送数据并替换服务端上指定的数据
OPTIONS 查询针对请求URL指定的资源支持
DELETE 从服务端删除指定数据
TRACE 沿着目标资源的路径执行消息环回测试

HTTP的状态码分为哪几类?

总体范围 已定义范围 分类
100~199 100~101 信息提示
200~299 100~206 成功
300~399 300~305 重定向
400~499 400~415 客户端错误
500~599 500~505 服务端错误

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。cookie

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协议的版本,没法完成处理。

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。并发

HTTP常见的头部信息有哪些?

请求报文的头部信息

Header 含义 示例
Accept 指定客户端可以接收的内容类型。 Accept: text/html,application/xhtml+xml
Accept-Charset 客户端能够接受的字符编码集。 Accept-Charset: GBK
Accept-Encoding 客户端能够支持的服务端返回内容压缩编码类型。 Accept-Encoding: gzip, deflate
Accept-Language 客户端可接受的语言 Accept-Language: zh-CN,zh
Authorization HTTP受权的受权证书 Authorization: Basic b25lbW9yZSUzQSV1NEUwNyV1NzMyQiV1NUI2NiV1NzkzRQ==
Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control: no-cache
Connection 表示是否须要持久链接。 Connection: keep-alive
Cookie HTTP请求发送时,会把保存在该请求域名下的全部cookie值一块儿发送给服务端。 Cookie: onemore=万猫学社;
Content-Length 请求的内容长度 Content-Length: 1024
Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded
Date 请求发送的日期和时间 Date: Mon, 16 Mar 2020 11:11:11 GMT
Expect 请求的特定的服务端行为 Expect: 100-continue
Host 指定请求的服务端的域名和端口号 Host: onemore.study
If-Match 只有请求内容与实体相匹配才获取该数据 If-Match: "306073f04224cbd114f14693c272f6a0"
If-Modified-Since 若是请求的部分在指定时间以后被修改则请求成功。 If-Modified-Since: Mon, 16 Mar 2020 11:11:11 GMT
If-None-Match 只有请求内容与实体不匹配才获取该数据。 If-None-Match: "306073f04224cbd114f14693c272f6a0"
If-Range 容许对数据的某个范围进行条件请求。 If-Range: "306073f04224cbd114f14693c272f6a0"
If-Unmodified-Since 只有在指定时间以后未被修改才请求成功。 If-Unmodified-Since: Mon, 16 Mar 2020 11:11:11 GMT
Max-Forwards 将请求转发给其余代理或网关的最大次数。 Max-Forwards: 10
Pragma 用来包含实现特定的指令 Pragma: no-cache
Proxy-Authorization 链接到代理的受权证书 Proxy-Authorization: Basic b25lbW9yZSUzQSV1NEUwNyV1NzMyQiV1NUI2NiV1NzkzRQ==
Range 只请求数据的一部分,指定范围 Range: bytes=512-1024
Referer 先前资源的URL Referer: http://onemore.study
TE 客户端愿意接受的传输编码 TE: trailers,deflate;q=0.5
User-Agent 包含发出请求的客户端信息 User-Agent: Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:65.0)

响应报文的头部信息

Header 含义 示例
Age 从原始服务端到代理缓存造成的估算时间(以秒计,非负) Age: 12
Allow 对某资源的有效的请求行为 Allow: GET, POST
Cache-Control 告诉全部的缓存机制是否能够缓存及哪一种类型。 Cache-Control: no-cache
Content-Encoding 服务端支持的返回内容压缩编码类型。 Content-Encoding: gzip
Content-Language 响应体的语言 Content-Language: zh-CN,zh
Content-Length 响应体的长度 Content-Length: 1024
Content-Location 请求资源实际所处位置 Content-Location: /index.do
Content-MD5 返回资源的MD5校验值 Content-MD5: 306073f04224cbd114f14693c272f6a0
Content-Range 在整个返回资源中本部分的字节位置 Content-Range: bytes 512-1024
Content-Type 返回资源的对象类型 Content-Type: text/html; charset=GBK
Date 原始服务端消息发出的时间 Date: Mon, 16 Mar 2020 11:11:11 GMT
ETag 请求变量的实体标签的当前值 ETag: "306073f04224cbd114f14693c272f6a0"
Expires 响应过时的日期和时间 Expires: Mon, 16 Mar 2020 11:11:11 GMT
Last-Modified 请求资源的最后修改时间 Last-Modified: Mon, 16 Mar 2020 11:11:11 GMT
Location 告知客户端资源的实际URL Location: http://onemore.study
Pragma 包括实现特定的指令 Pragma: no-cache
Proxy-Authenticate 它指出认证方案和可应用到代理的该URL上的参数 Proxy-Authenticate: Basic
Retry-After 若是实体暂时不可取,通知客户端在指定时间以后再次尝试 Retry-After: 60
Server 服务端软件名称 Server: Microsoft-IIS/8.5
Set-Cookie 设置Http Cookie Set-Cookie: onemore=万猫学社;
Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
Vary 告知下游代理是使用缓存响应仍是从原始服务端请求 Vary: *
Via 告知代理客户端响应是经过哪里发送的 Via: HTTP/1.1 GWA
WWW-Authenticate 代表客户端请求实体应该使用的受权方案 WWW-Authenticate: Basic

微信公众号:万猫学社app

微信扫描二维码运维

得到更多Java技术干货测试

相关文章
相关标签/搜索