目录
1.HTTP协议
HTTP是超文本传输协议(Hypertext Transfer Protocol)的缩写。它是一种用于传输超媒体文档(如HTML)的应用层协议。HTTP是Web通信的基础,用于浏览器和服务器之间的数据传输,使用户能够获取和发送网页、图片、音频、视频等资源。
HTTP协议是一种无状态的协议,即每个请求都是独立的,服务器不会保存之前的任何状态信息。客户端向服务器发送一条请求,服务器接收请求后处理并返回响应,然后关闭连接,完成一次HTTP事务。
HTTP通常使用TCP协议作为传输层协议,通过连接到服务器的端口(默认为80端口)来实现数据的传输。HTTP协议规定了请求方法(GET、POST、PUT、DELETE等)、请求头部、请求体、响应状态码、响应头部等一系列规范,使得客户端和服务器能够进行有效的通信。
1.URL
URL是统一资源定位符(Uniform Resource Locator)的缩写。它是用于标识和定位互联网上资源的地址。
URL由多个部分组成,包括协议(例如HTTP、HTTPS、FTP等)、主机名(或IP地址)、端口号、路径、查询参数和片段标识符等。它的格式通常为:
bash
protocol://hostname:port/path?query#fragment
- 协议:表示数据传输使用的协议,如HTTP、HTTPS、FTP等。
- 主机名:表示资源所在的服务器的域名或IP地址。
- 端口号:表示服务器监听的端口,默认的HTTP端口是80,HTTPS端口是443。
- 路径:表示资源在服务器上的路径,用于标识资源的位置。
- 查询参数:表示对资源的额外参数,多个参数之间使用"&"连接。
- 片段标识符:表示对资源的具体部分进行定位,通常在网页中使用锚点链接时会用到。
通过URL,用户可以访问和定位互联网上的网页、图片、视频、文件等各种资源。浏览器会根据URL来发起请求并获取相应的资源,从而实现网页的加载和显示。
2.urlencode和urldecode
urlencode和urldecode是用于对URL中的特殊字符进行编码和解码的函数。
- urlencode函数将URL中的非字母数字字符转换为特殊字符编码,以便在URL中进行传输。编码后的字符由一个百分号
%
和两位十六进制数表示。例如,空格被编码为%20,问号被编码为%3F
。
3.HTTP协议请求
HTTP协议请求是客户端向服务器发送的数据包,用于请求特定资源或执行特定操作。HTTP请求由请求行、请求头、空行和请求体组成。
请求行:包含请求方法、请求的URL和HTTP协议的版本。常见的请求方法有GET、POST、PUT、DELETE等。
GET /example.html HTTP/1.1
请求头:包含关于客户端和请求的附加信息,如User-Agent(客户端类型)、Host(请求的主机名)、Content-Type(请求体的类型)等。
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36
空行:用于分隔请求头和请求体的空行。
请求体:可选的,包含客户端向服务器发送的数据,例如在POST请求中的表单数据或JSON数据。
key1=value1&key2=value2
通过发送HTTP请求,客户端可以向服务器请求特定的资源,如HTML页面、图片、视频等,或者执行特定的操作,如提交表单数据、更新服务器上的数据等。服务器收到请求后会根据请求的方法和URL来处理请求,并返回相应的响应给客户端。
4.HTTP响应格式
HTTP协议响应是服务器向客户端发送的数据包,用于返回请求的结果或错误信息。HTTP响应由状态行、响应头、空行和响应体组成。
状态行:包含HTTP协议的版本、状态码和状态描述。状态码表示服务器对请求的处理结果,常见的状态码有200(OK)、404(Not Found)、500(Internal Server Error)等。
HTTP/1.1 200 OK
响应头:包含关于响应的附加信息,如服务器类型、内容类型、内容长度等。
Content-Type: text/html
Content-Length: 1024
空行:用于分隔响应头和响应体的空行。
响应体:包含服务器返回给客户端的实际数据,如HTML文档、图片、JSON数据等。
通过HTTP响应,服务器将请求的结果返回给客户端。客户端根据响应的状态码来判断请求是否成功,并解析响应头和响应体来获取实际的数据。
5.请求方法
HTTP定义了多种请求方法(也称为HTTP动词或HTTP谓词),用于指定对资源的不同操作。以下是常见的HTTP请求方法:
GET:从服务器获取资源。GET请求只请求获取资源,不对服务器数据产生任何影响。它通常用于获取HTML页面、图片、视频等静态资源。
POST:向服务器提交数据并处理请求。POST请求用于向服务器提交数据,通常用于提交表单数据、文件上传等操作。POST请求会对服务器数据产生影响。
PUT:向服务器传送数据,更新资源。PUT请求用于向服务器传递数据,并将其存储在指定的URL位置。如果URL已存在,则将其替换为请求中的数据。
DELETE:删除服务器上的资源。DELETE请求用于删除服务器上的指定资源。
HEAD:类似于GET请求,但只获取报头信息而不获取实体主体。HEAD方法会返回与GET方法相同的报头信息,但没有实际的响应主体。
OPTIONS:获取服务器支持的请求方法列表。OPTIONS请求用于获取服务器支持的请求方法列表,并在响应中返回允许的方法。
PATCH:对资源进行部分修改。PATCH请求用于对资源进行局部更新,只更新请求中指定的部分数据。
TRACE:追踪请求-响应的传输路径。TRACE请求用于测试和诊断,它会在服务器按原样返回请求,以便客户端查看传输路径。
CONNECT:用于代理服务器。CONNECT请求用于与代理服务器建立隧道连接,用于加密和保护隧道中传输的数据。
6.状态码
HTTP状态码是服务器在响应请求时返回的三位数字代码,用于表示请求的处理结果。以下是常见的HTTP状态码:
1xx(信息性状态码):表示请求已接收,正在处理。
100 Continue:服务器已收到初始部分请求,并要求客户端继续发送剩余部分。
101 Switching Protocols:服务器已理解并接受客户端的请求,将切换到不同的协议。
2xx(成功状态码):表示请求已成功被服务器接收、理解和处理。
200 OK:请求成功,返回请求的信息。
201 Created:请求已成功,并在服务器上创建了新的资源。
204 No Content:服务器成功处理请求,但没有返回任何内容。
3xx(重定向状态码):表示需要进一步操作以完成请求。
301 Moved Permanently:请求的资源已永久移动到新位置。
302 Found:请求的资源临时被移动到新位置。
304 Not Modified:资源未被修改,可以使用缓存的版本。
4xx(客户端错误状态码):表示客户端发起的请求有错误。
400 Bad Request:请求无效,服务器无法理解。
401 Unauthorized:请求未经授权,需要进行身份验证。
404 Not Found:请求的资源不存在。
5xx(服务器错误状态码):表示服务器在处理请求时发生错误。
500 Internal Server Error:服务器遇到了不可预测的错误。
502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效的响应。
503 Service Unavailable:服务器暂时无法处理请求,通常由于过载或维护。
7.Header
以下是常见的HTTP头字段(Header)的一些介绍:
Content-Type:指定请求或响应中的媒体类型。常见的值有 text/plain、text/html、application/json 等。
Content-Length:指定请求或响应中的实体主体的长度,用字节表示。
Accept:指定客户端能够接受的媒体类型。
User-Agent:包含了发送请求的用户代理应用程序的相关信息,例如浏览器类型和版本。
Authorization:用于请求身份验证信息,通常与需要进行身份验证的请求一起发送。
Cookie:包含了之前服务器通过 Set-Cookie 头字段设置的一个或多个 HTTP Cookie。
Host:指定请求的目标服务器的主机名和端口号。
Referer:包含了当前请求页面的来源页面的 URL。
If-None-Match:在条件 GET 请求中,用于判断客户端拥有的资源与服务器上的资源是否一致。
Cache-Control:用于控制缓存的行为,例如指定是否缓存、缓存的有效期等。
Content-Disposition:通常用于指示浏览器如何处理由服务器发送的附件。
Accept-Language:指定客户端能够接受的自然语言。
Location:用于重定向响应中,指定新的请求目标 URL。
Date:指定生成响应的日期和时间。
Connection:指定是否需要持久连接。