HTTP状态码主要负责:
表示客户端HTTP请求的返回结果
标记服务器端的处理是否正常
通知出现的错误等等
1.状态码告知从服务端返回的请求结果
状态码的职责是当客户端向服务端发送请求时,描述返回的请求结果
借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误
正常状态码:2XX,表示进展顺利
错误状态码:4XX、5XX,表示出现错误
状态码的例子:200 OK,由三位数字和原因短语组成
状态码的类别如下:
类别 | 原因端于 | |
---|---|---|
1XX | 信息性状态码(Informational) | 接收的请求正在处理 |
2XX | 成功状态码(Success) | 请求正常处理完毕 |
3XX | 重定向状态码(Redirection) | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码(Client Error) | 服务器无法处理请求 |
5XX | 服务器错误状态码(Server Error) | 服务器处理请求出错 |
虽然状态码要60多种,但是经常使用的就14种比较有代表性的状态码
2.2XX成功
2XX的响应结果表示请求被正常处理了
- (1)200 OK
若请求正常处理则返回200 OK
表示客户端发来的请求在服务端被正常处理了
在响应报文内,随状态码一起返回的信息会因为方法的不同而发生改变 - (2)204 No Content
表示请求处理成功,但没有资源可以返回
这个状态码代表服务器接收的请求已经成功处理,但在返回的响应报文中不含实体的主体部分
也不允许返回任何实体的主体当浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新
这个一般在只需要客户端往服务器发送消息,而服务端对客户端不需要发送新信息内容的情况下使用 - (3)206 Partial Content
范围请求,客户端给服务端说只想要资源的一部分
该状态码表示客户端进行了范围请求,同时服务器也成功执行了这个GET请求
3.3XX重定向
3XX的响应结果表明浏览器需要执行某些特殊的处理以正确处理请求
也就是服务端给客户端返回一个信息,说客户端需要干什么以后服务端才能正确处理请求
- (1)301 Moved Permanently(服务端的资源被永久移动)
永久性重定向
该状态码表示请求的资源被分配了新的URI,以后应使用资源现在所值的URI
如果已经把资源对应的URI保存为书签了,这时应该按Location首部字段提示的URI重新保存 - (2)302 Found(服务端的资源被临时移动)
临时性重定向
服务端资源的URI已经临时定位到其他位置了,姑且算你已经知道这个情况了
表示请求的资源已经被分配了新的URI,希望用户本次能使用新的URI访问 - (3)303 See Other
服务端:资源的URI已经更新,你是否能临时按新的URI访问
表示由于请求对应的资源存在着另外一个URI,应该使用GET方法定向获取请求资源
303和302很相似
但是303明确表示客户端应该使用GET方法获取资源
注意
当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST当成GET,并删除请求报文内的主体,之后请求会再次自动发送 - (4)304 Not Modified
附带条件的请求,服务端资源已经找到,但是不符合条件请求
表示客户端发送附带条件的请求时,服务端允许请求访问资源
但是因为请求为满足条件,直接返回304
服务器端资源并没有改变,可以直接使用客户端没有过期的缓存 - (5)307 Temporary Redirect
临时重定向与302相似
307会遵守标准,不会将POST变成GET
但是对于处理响应每中浏览器可能会有不同的行为
4.4XX客户端错误
4XX的响应结果表明客户端是发生错误的原因所在
- (1)400 Bad Request
服务端表示无法理解客户端发来的请求,客户端是不是发错了
表示请求报文中存在语法错误
当这个错误发生的时候,需要修改请求的内容后再次发送请求
浏览器会像200 OK一样对待这个状态码 - (2)401 Unauthorized
发送请求第一次返回401表示页面需要认证,第二次返回401表示认证失败
该状态码表示发送的请求需要有通过HTTP认证的认证信息
如果之前已经进行过1次请求,则表示认证失败 - (3)403 Forbidden
服务端不允许客户端访问那个资源
表示对请求资源的访问被服务器拒绝了
服务器端没有必要给出拒绝的详细里有,如果想做详细说明也可以
没有权限等等 - (4)404 Not Found
服务器上没有请求的资源
表示服务器上无法找到请求的资源,也可以直接拒绝请求
5.5XX服务器错误
5XX的响应结果表明服务器本身发生错误
- (1)500 Internal Server Error
服务器内部资源出现故障
表明服务端在执行请求时发生了错误,也有可能是WEB应用存在的bug或者临时故障 - (2)503 Service Unavailable
服务端正在忙
表明服务器暂时处于超负载或者正在进行停机维护,现在无法处理请求
注意:其实状态码也有可能出错,但是用户可能查觉不到