【刷题Day18】HTTP状态码与请求(浅)
常见的 HTTP 状态码有哪些?
常见的HTTP状态码分为五大类,每个状态码由三位数字组成,第一位数字表示类别:
- 1xx:信息相应
- 100 Continue:服务器已接受请求的初步部分,客户端应继续请求。
- 101 Switching Protocols:服务器同意切换协议,如从HTTP切换到WebSocket
- 2xx:成功
- 200 OK:请求成功,服务器返回所请求的资源或数据
- 201 Created:请求成功并创建了新的资源,常用于POST请求。
- 204 No Content:请求成功但服务器不返回任何内容,常用于删除操作。
- 3xx:重定向
- 301 Moved Permanently:资源已永久移动到新的URL,客户端应使用新URL访问。
- 302 Found:资源临时移动到新的URL,客户端应继续使用原来的URL。
- 304 Not Modified:资源未修改,客户端可以使用缓存版本。
- 4xx:客户端错误
- 400 Bad Request:请求无效或语法错误,服务器无法处理。
- 401 Unauthorized:请求需要身份验证,客户端未提供有效的凭证。
- 403 Forbidden:服务器理解请求但拒绝执行,通常是权限问题。
- 404 Not Found:请求的资源在服务器上未找到。
- 5xx:服务器错误
- 500 Internal Server Error:服务器内部错误,无法完成请求。
- 502 Bad Gateway:服务器作为网关或代理,从上游服务器接收到无效响应。
- 503 Service Unavailable:服务器暂时无法处理请求,通常是因为过载或维护。
HTTP 请求包含哪些内容,请求头和请求体有哪些类型?
HTTP请求由以下几部分组成:
- 请求行(Request Line):包含请求方法(如GET、POST)、请求的资源路径(如/index.html)、以及HTTP协议版本(如HTTP/1.1)。
- 请求头(Request Headers):包含各种键值对,用于传递客户端环境、请求内容、认证信息等。
- 空行(Blank Line):用于分隔请求头和请求体。
- 请求体(Request Body):仅在POST、PUT等方法中存在,包含需要发送到服务器的数据。
常见的请求头类型:
- 通用头部(General Headers):适用于请求和响应,如Cache-Control、Connection等。
- 请求头部(Request Headers):特定于请求的头部,如Host、User-Agent、Accept、Authorization等。
- 实体头部(Entity Headers):描述请求体的头部,如Content-Type、Content-Length。
请求体的类型:
- 表单数据(Form Data):application/x-www-form-urlencoded,用于提交表单数据。
- 多部份数据(Multipart Data):multipart/form-data,用于上传文件或复杂表单数据。
- JSON数据:application/json,用于提交JSON格式的数据。
- XML数据:application/xml,用于提交XML格式的数据。
- 文本数据:text/plain,用于提交纯文本数据。
HTTP 中 GET 和 POST 的区别是什么?
维度 | GET | POST |
---|---|---|
HTTP定义 | 用于获取资源,通常用于请求数据而不改变服务器状态 | 用于提交数据到服务器,通常会改变服务器的状态或产生副作用(如创建或更新资源) |
参数传递方式(应用中) | 参数通过URL拼接传递,暴露在请求URL中,具有可见性,长度有限(取决于浏览器和服务器) | 参数放在请求体中,通常不可见且长度理论上没有限制,更适合传递大量数据(但是注意,POST也可以在URL上放参数) |
安全性(应用中) | 参数可见,数据容易暴露在浏览器历史记录、日志和缓存中,不适合传递敏感信息。 | 数据放在请求体中,相对安全,但需要HTTPS才能保证数据加密传输。 |
幂等性(应用中) | 幂等(重复请求不会改变服务器状态) | 非幂等(多次请求可能导致重复创建资源或执行多次相同操作) |