如果有遗漏,评论区告诉我进行补充
面试官: http响应码都有哪些?
我回答:
在Java高级面试中,关于HTTP响应码的提问是常见的,因为这些响应码是Web开发中处理HTTP请求和响应时的重要部分。HTTP响应码由三位数字组成,它们分为五类,分别代表不同的请求状态。以下是HTTP响应码的详细分类和解释:
1. 1xx(信息性状态码)
这类状态码表示接收到请求并且继续处理。最常见的状态码是100(Continue),表示客户端可以继续发送请求的其余部分,或101(Switching Protocols)表示服务器将遵照Upgrade请求头中指定的协议进行协议切换。
- 100 Continue:继续。客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
- 101 Switching Protocols:切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到WebSocket协议。
2. 2xx(成功状态码)
这类状态码表示请求已成功被服务器接收、理解,并接受了。最常见的是200(OK),表示请求已成功,还有201(Created)用于POST请求成功创建了资源,204(No Content)表示服务器成功处理了请求,但没有返回任何内容。
- 200 OK:请求成功。服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
- 201 Created:已创建。请求成功并且服务器创建了新的资源。
- 202 Accepted:已接受。服务器已接受请求,但尚未处理。
- 203 Non-Authoritative Information:非授权信息。服务器已成功处理了请求,但返回的信息可能来自另一来源。
- 204 No Content:无内容。服务器成功处理了请求,但没有返回任何内容。
- 205 Reset Content:重置内容。服务器成功处理了请求,但没有返回任何内容。
- 206 Partial Content:部分内容。服务器成功处理了部分GET请求。
3. 3xx(重定向状态码)
这类状态码表示需要客户端采取进一步的操作才能完成请求。例如,301(Moved Permanently)表示请求的资源已被永久移动到新位置,302(Found)或临时重定向(Temporary Redirect)表示请求的资源暂时位于不同的URI。
- 300 Multiple Choices:多种选择。针对请求,服务器可执行多种操作。
- 301 Moved Permanently:永久移动。请求的网页已永久移动到新位置。当搜索引擎和用户访问旧地址时,会自动转到新地址。
- 302 Found:临时移动。服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 303 See Other:查看其他位置。请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。
- 304 Not Modified:未修改。自从上次请求后,请求的网页未修改过。
- 307 Temporary Redirect:临时重定向。与302类似,但明确要求客户端今后的请求应使用新的URL地址,且不允许从POST改为GET。
4. 4xx(客户端错误状态码)
这类状态码表示请求包含语法错误或无法完成请求。常见的有:
- 400 Bad Request:错误请求。服务器无法理解请求的格式,客户端不应当重试,而是应当返回和修正请求。
- 401 Unauthorized:未授权。请求要求身份验证。
- 403 Forbidden:禁止。服务器拒绝请求。
- 404 Not Found:未找到。服务器找不到请求的网页。
- 405 Method Not Allowed:方法禁用。禁用请求中指定的方法。
- 408 Request Timeout:请求超时。服务器等候请求时发生超时。
- 409 Conflict:请求的资源与资源的当前状态发生冲突。
- 418 I’m a teapot:这是一个非官方的幽默状态码,通常用于拒绝茶壶泡咖啡的请求。
5. 5xx(服务器错误状态码)
这类状态码表示服务器在处理请求的过程中发生了错误。常见的有:
- 500 Internal Server Error:服务器内部错误。服务器遇到错误,无法完成请求。
- 501 Not Implemented:尚未实施。服务器不具备完成请求的功能。
- 502 Bad Gateway:错误网关。服务器作为网关或代理,从上游服务器收到无效响应。
- 503 Service Unavailable:服务不可用。服务器目前无法使用(由于超载或停机维护)。
- 504 Gateway Timeout:网关超时。服务器作为网关或代理,但是没有及时从上游服务器收到请求。
总结
HTTP响应码是Web开发中非常重要的一部分,它们帮助开发者理解HTTP请求的处理状态和结果。在Java高级面试中,掌握这些响应码的含义和用法是非常必要的。以上信息来源于多个权威来源,包括CSDN博客和知乎专栏等,以确保其准确性和可靠性。