浅谈一下HTTP的状态码

本文详细讲解了HTTP请求头结构,包括请求方法、URL和协议版本,以及常见的HTTP状态码及其含义,如200 OK、301/302重定向和404 Not Found等,帮助理解HTTP在面试中的重要性。
摘要由CSDN通过智能技术生成

计网里面HTTP虽然只是一小部分但是却在面试中老是被问到,HTTP的报头和状态码更是经常考到的高频考点,今天来补充一下这方面的知识。

首先是HTTP的报头

736f9bbf96b9ae6b29a9f2129771f9aa.png

HTTP的报头分为请求行、请求头部和请求数据,它们之间通过回车换行分隔。请求行中有三个内容,然后它们按照空格分隔,分别是请求方法(POST、GET)、请求的URL、以及使用的协议版本号,接着是若干个头部字段名与头部字段值,头部字段结束时,使用一对回车换行符进入请求数据部分。

以下图源:一文牢记HTTP状态码(图解HTTP状态码) - 云+社区 - 腾讯云 (tencent.com)

为了使客户端知晓请求的结果或者发生的错误,HTTP协议规定了若干状态码:

73a47570fa713783514871d3e7528b90.png


类别

原因短语

1XX

Informational(信息性状态码)

接收的请求正在处理

2XX

Success(成功状态码)

请求正常处理完毕

3XX

Redirection(重定向)

需要进行附加操作以完成请求

4XX

Client Error(客户端错误状态码)

服务器无法处理请求

5XX

Server Error(服务器错误状态码)

服务器处理请求出错

200 英文名称:OK 表示客户端的请求被成功响应了。
adbb70cb18c0b62a67f5954a05211e21.png

204 英文名称:NoContent  该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

abf2d1de35fd1bb27c349a6578c8d286.png

206 英文名称:Partial Content  该状态码表示服务端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含Content-Range制定范围的实体内容。
51c7c33a08dfa3a0393a69835a450272.png
301 英文名称:Moved Permanently, 永久重定向 该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI保存为书签了,这是应该按Location首部字段提示的URI重新保存。

1d56aac87045ee093953f5eaf5afd5c1.png

302 英文名称:Found,临时重定向 该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。与301相似,不同之处在于本次重定向是临时的,资源的位置之后可能还会发生改变。客户端应继续使用原URL。

9e4d3cc232e0060b416da5b644d081ed.png

303 英文名称:See Other 该状态码表示由于请求对应的资源存在着另一个URI,应使用GET/POST方法定向获取请求的资源。303状态码和302状态码有着相同的功能,但303状态码明确表示客户端应采用GET/POST方法获取资源,这点与302状态码有区别。

b7b431df64947fc633046583d4903072.png

301 302 303 之间的联系

当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。301,302标准是禁止将POST方法改变成GET方法,但实际使用时大家都会这么做。

304 Not Modified 未修改。

表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况 。例如,客户端请求的资源在客户端本地已有缓存,会在请求头部中加入“If-Modified-Since", "If-None-Match"等字段,服务端根据这些字段信息判断这些资源信息是否经过修改,如果没有则返回 304 状态码,客户端可以直接使用缓存中的资源。

98da542638a1ed9ca95b7102c7be4a69.png

307 Temporary Redirect临时重定向 临时重定向。该状态码与302有着相同的含义。尽管302标准禁止POST变换成GET,但实际使用时大家并不遵守。307会遵照浏览器标准,不会从POST变成GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况。

400 Bad Request 客户端请求的语法错误,服务器无法理解

34922e8e4336a5f9e31673f460575027.png

401 Unauthorized 请求要求用户的身份认证 若是第一次返回,说明请求认证,若是第二次返回,说明认证失败。 

该状态码表示发送请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用于质询(challenge)用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。

ee9d8a38233086d0b3291416c338cb3c.png

403 Forbidden 访问被拒绝 可能由于访问权限不足

1ed843062bf73a34008ca8f54c38fb75.png

404 Not Found 表示请求的资源找不到,通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。当然,除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

74ed98a3cc6d04395b7cb32402f91a0a.png

500 Internal Server Error 服务器内部错误该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。表示服务器g了。
c4c00b95a3310831a06930c763856eed.png

503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。

525ec9631b7e054e5b3b6ed7c1b3aa35.png

总结最常见的状态码:

  • 200 - 请求成功(程序员喜闻乐见的)

  • 301 - 资源(网页等)被永久转移到其它URL

  • 404 - 请求的资源(网页等)不存在(用户最不想看到的)

  • 500 - 内部服务器错误(程序员最害怕的)

  • :)希望明天三面ok

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值