HTTP状态码

1xx消息


这一类型的状态码,代表请求已被接受,需要继续处理。

101 Switching Protocols

服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。如从 HTTP1.1 切换到 HTTP/2 或 Websocket

2xx成功


这一类型的状态码,代表请求已成功被服务器接收、理解、并接受

200 OK

请求已成功

206 Partial Content(RFC 7233

服务器已经成功处理了部分GET请求,如断点续传、分段下载。

3xx重定向


301 Moved Permanently

永久重定向

302 Moved Temporarily

临时重定向

4xx客户端错误


这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理

400 Bad Request

The request could not be understood by the server due to malformed syntax

401 Unauthorized

未通过 HTTP Auth 认证

403 Forbidden

服务器拒绝执行

404 Not Found

服务器找不到请求资源

405 Method Not Allowed

请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow头信息用以表示出当前资源能够接受的请求方法的列表。例如,需要通过POST呈现数据的表单上的GET请求,或只读资源上的PUT请求。

5xx服务器错误


这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生

500 Internal Server Error

通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

502 Bad Gateway

后端服务器无响应,如nginx+php-fpm架构中php-fpm没有启动

503 Service Unavailable

由于临时的服务器维护或者过载,服务器当前无法处理请求。

504 Gateway Timeout

后端处理超时,如php执行时间超过nginx的fastcgi_read_timeout时间

 

Notes


301/302 区别

用户通过浏览器访问并无感知区别,主要作用于搜索引擎,302告诉搜索引擎此处跳转是临时的,应当收录原来的地址,有可能会被搜索引擎认为作弊;301告诉搜索引擎原地址已永久转移,应当收录新地址。引用一段StackOverflow的答案:

Status 301 means that the resource (page) is moved permanently to a new location. The client/browser should not attempt to request the original location but use the new location from now on.

Status 302 means that the resource is temporarily located somewhere else, and the client/browser should continue requesting the original url.