HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它是在Web中数据通信的基础。以下是HTTP协议的一些关键知识点:
-
HTTP基础概念:
- 客户端和服务器: HTTP是一种客户端-服务器协议,其中客户端发送请求,而服务器返回响应。
- 无状态性: HTTP是一种无状态协议,每个请求都是独立的,服务器不会保留前一次请求的状态信息。
-
HTTP请求(Request):
- 请求方法(HTTP Methods): 常见的请求方法包括 GET、POST、PUT、DELETE、HEAD 等。
请求方法 作用 特点 例子 GET 用于请求获取指定资源 请求参数附加在URL中,对服务器的请求不会产生实际的修改操作 获取网页、图片、文件等 POST 用于向指定资源提交数据,数据被包含在请求体中 对服务器的请求可能会导致对资源的状态变化或副作用 提交表单、上传文件、进行登录操作等 PUT 用于向指定资源位置上传新的实体数据,或者更新现有资源 提交的数据完全取代了指定资源的所有当前表示 更新文章、更新用户信息等 DELETE 请求服务器删除指定的资源 对服务器的请求可能会导致资源的永久性删除 删除文章、删除用户等 HEAD 与GET方法类似,但服务器只返回头部信息,不返回实体的主体部分 主要用于获取资源的元信息而无需传输整个实体 获取资源的元信息,如文件大小、修改时间等,但不获取实际内容 - 请求URL(Uniform Resource Locator): 标识请求的资源,包括协议、主机名、端口、路径等信息
- 请求头(Request Headers): 包含关于请求的信息,如用户代理、内容类型等
- 请求体(Request Body): 对于某些请求(如 POST),请求体包含发送到服务器的数据。
- 请求方法(HTTP Methods): 常见的请求方法包括 GET、POST、PUT、DELETE、HEAD 等。
-
HTTP响应(Response):
- 状态码(Status Code): 表示请求的结果
1xx(信息性状态码) 100 Continue: 服务器已收到请求头,并且客户端应继续发送请求体 2xx(成功状态码) 200 OK: 请求成功。常用于GET和POST请求。
201 Created: 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立。
204 No Content: 服务器成功处理了请求,但不需要返回任何实体内容。
3xx(重定向状态码) 301 Moved Permanently: 被请求的资源已永久移动到新位置。
302 Found: 被请求的资源临时从不同的URI响应请求。
303 See Other: 对于GET或POST请求,资源存在于另一个URI,应使用GET方法检索。
304 Not Modified: 资源未被修改,可以使用缓存的版本
4xx(客户端错误状态码) 400 Bad Request: 服务器无法理解客户端的请求,通常因为请求中包含无效的参数。
401 Unauthorized: 请求未经授权,需要身份验证。 403 Forbidden: 服务器理解请求,但拒绝执行。通常是因为缺乏访问资源的权限。
404 Not Found: 请求的资源在服务器上未找到。
5xx(服务器错误状态码) 500 Internal Server Error: 服务器遇到了一个未曾预料的状况,导致无法完成对请求的处理。
501 Not Implemented: 服务器不支持当前请求所需要的某个功能。
502 Bad Gateway: 服务器作为网关或代理,从上游服务器接收到无效的响应。
503 Service Unavailable: 服务器当前无法处理请求,一般用于临时性的维护或过载情况。
- 响应头(Response Headers): 包含关于响应的信息,如服务器类型、日期、内容类型等。
- 响应体(Response Body): 包含由服务器返回的数据。
- 状态码(Status Code): 表示请求的结果
-
HTTP协议版本:
- 目前主要使用的版本是 HTTP/1.0、HTTP/1.1 和 HTTP/2。新版本通常带来性能和安全性的改进。
-
URL结构:
- URL由协议、主机名、端口、路径、查询字符串和片段组成。例如:
https://www.example.com:8080/path/to/resource?name=value#section
.
- URL由协议、主机名、端口、路径、查询字符串和片段组成。例如:
-
HTTP头部(Headers):
- 通用头部(General Headers): 请求和响应消息都可以包含的头部。
- 请求头部(Request Headers): 包含有关请求的信息,如 Host、User-Agent 等。
- 响应头部(Response Headers): 包含有关响应的信息,如 Content-Type、Server 等。
- 实体头部(Entity Headers): 描述实体正文的信息,如 Content-Length、Content-Encoding 等。
-
状态码:
- 1xx(信息性状态码): 接收到请求,继续处理。
- 2xx(成功状态码): 请求成功被服务器接收、理解、并接受。
- 3xx(重定向状态码): 需要客户端采取进一步的操作来完成请求。
- 4xx(客户端错误状态码): 客户端看起来可能发生了错误,妨碍了服务器的处理。
- 5xx(服务器错误状态码): 服务器不能完成明显有效的请求。
-
Cookie和Session:
- Cookie: 服务器通过 Set-Cookie 头部将信息保存在客户端,客户端在后续请求中通过 Cookie 头部将信息发送回服务器。
- Session: 一种在服务器端存储信息的机制,通常使用 Cookie 或 URL 参数来维持会话。
-
HTTPS:
- HTTP协议的安全版本,通过TLS/SSL进行加密通信,防止信息被中间人窃听和篡改。
-
WebSockets:
- 提供全双工通信通道,允许客户端和服务器之间进行实时通信。