HTTP状态码(彷佛没好好研究过

这几天小组值班的时候老是听学长提起面试,也顺便搜了下一些传说中的面经....
发现差距仍是挺大的,甚至这个状态码的问题也没好好总结过
为了证实本身作过程序员.............就从新记录下html

绝大部分为《图解HTTP》笔记python

总述

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端 的处理是否正常、通知出现的错误等工做
状态码由3位数字组成,第一位是缘由分类表明,剩下的两位没有特殊分类
类型 类别 缘由
1XX Informational(信息性状态码) 接受的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 须要进行附加操做以完成请求
4XX Client Error(客户端错误状态码) 服务器没法处理请求
5XX 5XX Server Error(服务器错误状态码) 服务器处理请求错误

常见的大概一共有14种程序员

2XX

200 OK

这个状态码应该是最多见也是咱们最想见到的,表明客户端发送的请求被服务端正常处理
同时在响应报文内,随状态码返回的信息会随着HTTP方法不一样而不一样面试

常见的请求方法是GET和POST,但不只仅这两种,一般有如下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT

200

204 No Content

这个状态码表明的意思就是客户端发送的请求被服务端正常处理了
可是服务端并无返回任何实体内容浏览器

通常在只须要从客户端往服务器发送信息,而对客户端不须要发送新
信息内容的状况下使用

206 Partial Content

该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求
对于206的定义是请求必须包含Range头来标示咱们想要的范围缓存

所以这就是说咱们能够经过Range和206 Partial Content来分块获取一个大文件

3XX

301 Moved Permanently

永久性重定向

该状态码表示请求的url资源被分配了新的url
若是已经把资源对应的URI保存为书签了
可是此时新的URL在Location头中给出,浏览器应该自动地保存和访问新的URL服务器

302 Found

临时性重定向

从总的描述中咱们能够看出这个状态码和301类似
只是该状态码属于临时性分配新的url
在本次的访问中应使用新得url,同时不用更新书签url

303 See Other

这个状态码也表明访问存在新的url,但应注意的是这个
状态码明确表示客户端应该采用GET方法获取资源spa

好比当使用POST方法访问CGI程序其执行后的处理结果是但愿客户端能以GET方法重定向
到另外一个URI上去时,返回303状态码。虽然302 Found状态码也能够实现相同的功能,但
这里使用303状态码是最理想的

304 Not Modified

该状态码表示客户端发送附带条件的请求时,304状态码返回时,不包含任何响应的主体部分
服务器告诉客户,原来缓冲的文档还能够继续使用
304虽然被划分在3XX类别中,可是和重定向没有关系orm

好比在包含If-Modified的网页中,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新
而动态页面则是在消息头中定义Last Modified,最后造成这样的结果

第一次访问 200
鼠标点击二次访问 (Cache)
按F5刷新 304
按Ctrl+F5强制刷新 200

附带条件的请求是指采用 GET 方法的请求报文中包含 If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since 中任一首部

307 Temporary Redirect

临时重定向

这个状态码和302含义同样,不过上面没有说到

当 30一、30二、303响应状态码返回时,几乎全部的浏览器都会把POST改为 GET,并删除请求报文内的主体,以后请求会自动再次发送
30一、302标准是禁止将POST方法改变成GET方法的,但实际使用时你们都仍是会那么作

而这个307比较听话,会遵守浏览器标准,不会从POST变成GET

4XX

400 Bad Request

该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求

401 Unauthorized

该状态码表示发送的请求须要有经过HTTP认证(BASIC认证、DIGEST 认证)的认证信息。另外若以前已进行过1次请求,则表示用户认证失败

401

403 Forbidden

这个状态码也是比较常见的,表示尝试请求访问的资源被禁止访问
未得到文件系统的访问受权,访问权限出现某些问题(从未受权的发送源IP 地址试图访问)等列举的状况均可能是发生403的缘由

404 Found

又一个常见的状态码,表示服务器没有此资源
也多是服务器无情的拒绝了你,但不想告诉你为何

这个在python的开发中我主要见到的主要是路由未定义而致使的404

5XX

500 Internal Server Error

该状态码代表服务器端在执行请求时发生了错误。也有多是Web应用存在的bug或某些临时的故障

这个正如官方解释,在开发中将常遇到的问题就是代码错误,至少我碰到的是这样

503 Service Unavailable

这个状态码表明的是服务器超过负载或者停机维护,没法处理请求

关于状态码和响应

很多返回的状态码响应都是错误的,可是用户可能察觉不到这点。好比 Web 应用程序内部发生错误,状态码依然返回200 OK,这种状况也常常遇到

参考:状态码维基百科
304 Not Modified状态码
304是什么意思

相关文章
相关标签/搜索