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.