作者:李成文;
标签: HTTP状态码
HTTP状态码的职责是当客户端发送请求时,描述返回的请求结果。通过状态码可以知道服务器端处理请求是否出现错误。
状态码一般是由三位数字和原因短语组成。
2XX 成功
2XX的响应结果表明请求被成功处理了。
200 OK
表示客户端发送过来的请求已经被正常处理。
在响应报文里面,随着状态吗一起返回的信息会因为方法的不同而发生改变。如:使用GET方法的时候,对应的请求资源的实体会作为响应体返回;而使用HEAD方法的时候,请求资源的实体首部不随着报文主体作为响应返回。
204 No Content
表示服务器接受的请求已经成功处理,但是在返回的响应报文中不包含实体的主体部分。也不允许返回实体的主体。
一般在客户端需要往服务端发送消息,而客户端不需要发送新消息内容的情况下使用。
206 Partial Content
表示客户端发送了范围请求,而服务端成功执行了这部分的GET请求。在响应报文中包含由Content-Range指定范围的实体内容。
3XX 重定向
3XX 表示浏览器需要执行某些特殊的处理以正确处理请求
301 Moved Permanently
永久重定向,表示请求的资源已经被分配到了新的URI,以后应该使用资源现在所指的URI,如果已经把资源对应的URI保存为书签了,这个时候应该按照Location首部字段提示的URI重新保存。
302 Found
临时重定向,表示请求的资源已被分配了新的URI,希望用户本次访问能够使用新的URI访问。
303 See Other
该状态码表示请求对应的资源存在着另一个URI,应该使用GET方法定向获取请求的资源,303状态码明确表示客户端需要采用GET方法获取资源,这一点和302状态码有区别。
304 Not Modified
表示客户端发送附加条件的请求时,客户端允许请求访问资源,但是未满足条件的情况。304状态码返回的时候不包含任何响应的主体部分。
307 Temporary Redirect
临时重定向。与302有相同的含义,但是当301、302、303响应状态码返回的时候,几乎所有的浏览器都会把POST改成GET,并且删除请求报文内的主体,然后请求会自动再次发送,302、301标志是禁止将POST方法变成GET方法的。
而307会遵照浏览器的标准,不会从POST变成GET。
4XX 客户端错误
4XX的响应结果表示发生错误的原因是客户端
400 Bad Request
表示请求报文中存在语法错误,当发生错误时,需要修改请求的内容后再次发送请求,浏览器会像200 OK 一样对待该状态码。
401 Unauthorized
表示发送的请求需要有通过HTTP认证的认证信息。另外如果之前进行过1次请求,则表示用户认证失败。
当浏览器初次接受到401响应的时候,会弹出认证用的对话窗口。
403 Forbidden
表示请求资源的访问被服务器拒绝了,服务器可以不给出详细的拒绝理由,但是如果想做出说明的话,可以在实体的主体部分对原因进行描述。权限问题是403的主要原因。
404 Not Found
表示服务器上无法找到请求资源,另外在服务器端拒绝请求并且不想说明理由的情况下也可以使用。
5XX 服务器错误
5XX 的响应结果表明服务器本身发生错误。
500 Internal Server Error
表示服务器端在执行请求时发生了错误。
503 Service Unavailable
表示服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况的事件,可以写入RetryAfter首部字段再返回给客户端。