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

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

什么是HTTP报文?

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

HTTP报文由哪三部分组成?

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

HTTP报文分为哪两类?

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

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

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

HTTP的状态码分为哪几类?

整体范围已定义范围分类
100~199100~101信息提示
200~299100~206成功
300~399300~305重定向
400~499400~415客户端错误
500~599500~505服务端错误

HTTP常见的状态码有哪些?

状态码原因短语含义
100Continue说明收到了请求的初始部分,请客户端继续。
101Switching Protocols说明服务端正在根据客户端的指定,将协议切换成Update头部所列的协议。
200OK请求没有问题,主体包含了所请求的数据。
201Created用于在服务端创建数据的请求(比如PUT),Location头部给出了创建数据的URL。
202Accepted请求已经被接受,但服务端还没有对其执行任何动作。
203Non-Authoritative Information数据已经正常地返回,但一些响应报文头部可能不正确。
204No Content响应报文中包含起始行和头部,没有主体部位。客户端应该继续显示原来的数据。
205Reset Content仍然没有主体部分,但客户端应该清除它所显示的数据。
206Partial Content成功执行了一部分或者一个范围内的请求。
300Multiple Choices客户端请求了一个实际指向多个资源的URL,服务端可以在Location头部包含首选URL。
301Moved Permanently请求的URL已经被移除,响应报文中的Location头部包含现在资源的URL。
302Found类似于301,但新的URL应该被视为临时性的,将来的请求仍应是老的URL。
303See Other类似于301,但主要目的是允许POST请求的响应将客户端定向到某个资源上。
304Not Modified客户端有缓冲的文档并发出了一个条件性的请求时,服务端告知客户端,原来缓冲的数据还可以继续使用。
305Use Proxy用来说明必须通过代理进行访问,代理的位置在Location头部给出。
306-未使用
307Temporary Redirect类似于301,但客户端应该使用Location头部给出的URL临时请求,将来的请求仍应是老的URL。
400Bad Request客户端发出的是错误请求,服务器无法理解。
401Unauthorized请求要求客户端的身份认证
402Payment Required保留,以作将来使用
403Forbidden服务端理解客户端的请求,但是拒绝执行此请求。
404Not Found服务端无法找到客户端所请求的URL。
405Method Not Allowed服务端不支持客户端请求的方法。
406Not Acceptable服务端无法根据客户端请求的类型完成请求。
407Proxy Authentication Required类似于401,但用于要求对资源进行认证的代理服务器。
408Request Timeout服务端等待客户端发送的请求时间过长,服务端可以响应此状态码,并关闭连接。
409Conflict客户端的请求可以在资源上引发一些冲突,服务端可以发送此状态码。
410Gone类似于404,但是服务端曾经拥有过此资源。
411Length Required服务端要求客户端的请求报文中包含Content-Length头部时,使用此状态码。
412Precondition Failed客户端发起了条件请求,并且其中一个条件失败时,使用此状态码。
413Request Entity Too Large客户端发送的主体部分比服务端能够或者期望处理的要大时,使用此状态码。
414Request URI Too Large客户端发送的请求URI比服务端能够或者期望处理的要长时,使用此状态码。
415Unsupported Media Type服务端无法理解或无法支持客户端所发的内容类型是,使用此状态码。
416Requested Range Not Satisfiable客户端请求指定资源的范围无效或无法满足。
417Expectation Failed服务端无法满足客户端的Expect头部。
500Internal Server Error服务端发生内部错误,无法完成请求。
501Not Implemented服务端不支持客户端的请求,无法完成请求。
502Bad Gateway作为网关或代理的服务器,从远端服务端接收到了一个无效的请求。
503Service Unavailable用来说明服务端现在无法为请求提供服务,但是将来可以。什么时候资源会变为可用可包含在服务端的Retry-After头部中。
504Gateway Timeout类似于408,只是作为网关或代理的服务器,未及时从远端服务端获取请求。
505HTTP Version Not Supported服务端不支持请求的HTTP协议的版本,无法完成处理。

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
AuthorizationHTTP授权的授权证书Authorization: Basic b25lbW9yZSUzQSV1NEUwNyV1NzMyQiV1NUI2NiV1NzkzRQ==
Cache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cache
Connection表示是否需要持久连接。Connection: keep-alive
CookieHTTP请求发送时,会把保存在该请求域名下的所有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先前资源的URLReferer: 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告知客户端资源的实际URLLocation: 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 CookieSet-Cookie: onemore=万猫学社;
Transfer-Encoding文件传输编码Transfer-Encoding:chunked
Vary告知下游代理是使用缓存响应还是从原始服务端请求Vary: *
Via告知代理客户端响应是通过哪里发送的Via: HTTP/1.1 GWA
WWW-Authenticate表明客户端请求实体应该使用的授权方案WWW-Authenticate: Basic

文章持续更新,微信搜索「万猫学社」第一时间阅读。
关注后回复「电子书」,免费获取12本Java必读技术书籍。

评论 155
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万猫学社

您的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值