客户端向服务器发送请求时,服务器返回状态码告诉我们服务器响应的状态。通过状态码我们可以判断请求是否成功以及失败时出现了什么问题。
状态码是由三位数字和原因短语组成的。第一位数字表示响应类别,响应类别从1到5分为5种。
常见的状态码
2XX 成功
200 OK 请求被服务器正常处理。
204 No Content 请求已成功处理,但是不需要返回任何实体内容。一般用在只需要从客户端发送信息,不需要服务端返回新数据的情况。
206 Partial Content 客户端发送了一个带有Range头的Get请求,服务器处理范围请求成功,返回了指定范围的数据内容,可以用在下载功能的断点续传上,根据Content-Range首部字段指定范围的大小。
3XX 重定向
301 Moved Permanently 永久重定向,表示请求的资源已经永久的移动到了其他位置,只要不是HEAD请求,响应报文的Location首部字段应该包含新的URL超链接。
302 Found 临时重定向,表示请求的资源临时转移到了其他位置。和301很像,区别是资源临时移动,资源将来可能还会改变,同样,新的临时URL应该提示在响应报文的Location首部字段。
303 See Other 表示请求资源存在另一个URL,应使用GET定向获取请求支援,303功能与302相同,区别是303明确指定客户端请求应该以GET方式访问新URL。
304 Not Modified 表示客户端发送附带条件的请求时,条件不满足返回304,不包含任何响应主体,虽然被划分到3XX,但是和重定向没有关系。
307 Temporary Redirect 临时重定向,和302有同样的意义,大部分浏览器302会将POST请求转为GET,303是强制将POST转为GET,但是307会遵照浏览器标准不会将POST变为GET。
4XX 客户端错误
400 Bad Request 表示请求报文存在语法错误或参数错误,服务器不理解。
401 Unauthorized 表示发送的请求需要有HTTP认证信息或是认证失败。
403 Forbidden 表示对资源的访问被服务器拒绝了,可以在响应的主体中说明拒绝原因。
404 NotFound 表示服务器找不到你请求的资源。
408 Request Timeout 请求超时,客户端没有在服务预备等待的时间内完成一个请求的发送。
5XX 服务器错误
500 Internet Server Error 表示服务器执行请求的时候出错了,很有可能是服务端的程序bug。
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable 表示服务器超负荷或正停机维护,无法处理请求。当请求用户量太多,服务器为了保护自己不挂掉,机智的拒绝某些用户的访问,这些用户就会收到503这个错误。
504 GateWay Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器接收到响应。
通俗的说,nginx作为一个代理服务器,将请求转发到其他服务器来处理,nginx收到了无法理解的响应返回502,出现502错误,通常意味着tomcat挂掉了。当nginx超过自己配置的超时时间还没有收到请求时,返回504。