一、概念
超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
二、请求头参数说明
1、Accept
概念:用于告诉服务器,客户端能够理解并处理哪种类型的响应数据。
说明:
①application/json表示客户端可以接受服务器回发的JSON格式的数据,text/plain表示客户端可以接受服务器回发的纯文本格式的数据,text/html表示客户端可以接受服务器回发的HTML文档格式的数据,*/*表示客户端可以接受服务器回发的任意类型的数据;如果服务器无法返回设定类型的数据,则返回406错误(NonAcceptable)。
②如果想给响应数据类型增加优先级,则使用q=来额外表示权重值;重值q的范围是0~1(可精确到小数点后3位),且1为最大值。不指定权重q值时,默认权重为q=1.0。当服务器提供多种响应数据时,将会首先返回权重值最高的数据。(例如:Accept:application/json,text/plain;q=0.9,text/html,*/*)
2、Accept-Encoding
概念:用于告诉服务器,客户端能够理解的内容编码方式;允许服务器根据客户端的支持情况,选择一种或多种编码方式对响应的内容进行压缩,以减少传输的数据量,从而提高传输效率。
说明:
①gzip表示采用Lempel-Zivcoding(LZ77)压缩算法,以及32位CRC校验的编码方式,deflate表示采用zlib结构和deflate算法的编码方式,compress表示采用Lempel-ZivWelch(LZW)算法的编码方式,br表示采用Brotli算法的编码方式,identity表示客户端不支持任何压缩方式或者明确希望接收未压缩的内容,*表示匹配其他任意未在该请求头字段中列出的编码方式。
②如果想给编码方式增加优先级,则使用q=来额外表示权重值;重值q的范围是0~1(可精确到小数点后3位),且1为最大值。不指定权重q值时,默认权重为q=1.0。当服务器提供多种编码方式时,将会首先使用权重值最高的编码方式。(例如:Accept-Encoding:br,gzip;q=0.8,deflate,zstd;q=0.5,*;q=0.1)
3、Accept-Language
概念:用于告诉服务器,客户端能够理解并处理哪种类型的自然语言。
说明:
①en表示客户端能够理解并处理英语,en-US表示客户端能够理解并处理美国英语,zh表示客户端能够理解并处理中文,zh-CN表示客户端能够理解并处理简体中文,zh-TW表示客户端能够理解并处理繁体中文,zh-HK表示客户端能够理解并处理中文(香港),fr表示客户端能够理解并处理法语,fr-FR表示客户端能够理解并处理法国法语,de表示客户端能够理解并处理德语,de-DE表示客户端能够理解并处理德国德语。
②如果想给自然语言增加优先级,则使用q=来额外表示权重值;重值q的范围是0~1(可精确到小数点后3位),且1为最大值。不指定权重q值时,默认权重为q=1.0。当服务器提供多种自然语言时,将会首先使用权重值最高的自然语言。(例如:Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2)
4、Connection
概念:用于控制HTTP连接的行为,允许客户端和服务器在请求/响应中指定是否要保持连接打开,以便后续的请求/响应可以在同一个连接上进行,从而节省资源并提高性能。
说明:
①Connection:keep-alive当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭(这是HTTP/1.1的默认行为),如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;
②Connection:close代表一个请求完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭(这是HTTP/1.0的默认行为),当客户端再次发送请求,需要重新建立TCP连接。
5、Host
概念:用于指定请求的目标服务器的主机名和端口号。
说明:
①Host是HTTP1.1协议中新增的一个请求头字段,也是HTTP请求中唯一必须包含的请求头字段;如果缺少这个字段,服务器可能会返回400BadRequest错误。
②Host字段的格式通常是"域名:端口号",例如www.example.com:8080。如果端口号是默认的80,则可以省略端口号部分。
6、Referer
概念:用来告诉服务器是从哪个页面链接过来的,其格式通常为:Referer:<RUL>,这里的<URL>是引用页面的完整URL地址。
说明:
①通过Referer字段,服务器可以了解用户是从哪个页面跳转而来的,这有助于服务器进行更精确的数据统计、日志记录、缓存优化等操作;
②服务器可以通过检查Referer字段来判断请求是否来自合法的来源,从而防止恶意请求或未经授权的访问;
③通过验证Referer字段,网站可以判断一个请求是否是从预期的来源发起的,从而增加对跨域请求伪造(CSRF)等攻击的防御能力。
7、User-Agent
概念:用于告诉服务器,客户端使用的操作系统、浏览器的名称和版本。
说明:
①网站管理员可以使用User-Agent字段来收集关于访问其网站的客户端的统计数据,这些数据可以用于了解用户的浏览器偏好、设备使用情况等。
②基于User-Agent字段,服务器可以发送与特定浏览器或设备兼容的网页内容或资源。
③值得注意的是,User-Agent字段是可以被伪造的,因此不能仅依赖此字段来确定请求的真正来源或用户身份。
8、Content-Type
概念:用于告诉服务器,请求体的数据类型是什么。
说明:
①Content-Type的格式通常为type/subtype;parameter。其中,type是主类型,subtype是子类型,二者之间用"/"分隔。parameter是可选参数,如字符集(charset)、边界(boundary)等。
②application/json表示请求体是JSON格式的数据,text/plain表示请求体是纯文本数据,application/xml、text/xml表示请求体是XML格式的数据,multipart/form-data表示请求体是包含文件的数据,application/x-www-form-urlencoded表示请求体是表单数据,此外还可以自定义Content-Type的值以指示服务器如何处理特定的数据类型(例如:Content-Type:application/json;charset=utf-8)。
三、响应头参数说明
1、Content-Type
概念:用于告诉客户端,响应体的数据类型是什么。
说明:
①Content-Type的格式通常为type/subtype;parameter。其中,type是主类型,subtype是子类型,二者之间用"/"分隔。parameter是可选参数,如字符集(charset)、边界(boundary)等。
②text/html表示响应体是HTML文档,text/plain表示响应体是纯文本数据,text/css表示响应体是CSS样式表,image/jpeg、image/png、image/gif等表示响应体是图片数据,application/json表示响应体是JSON格式的数据,application/pdf表示响应体是PDF文档,application/xml、text/xml表示响应体是XML格式的数据,application/javascript、text/javascript表示响应体是JavaScript代码,application/octet-stream表示响应体是任意二进制数据,multipart/mixed表示响应体是复合体类型,此外还可以自定义Content-Type的值以指示响应体的特定格式或内容(例如:Content-Type:application/json;charset=utf-8)。
四、请求行、响应行格式
1、请求行
请求方式请求URIHTTP协议及版本(例如:POST/user/loginHTTP/1.1)
2、响应行
HTTP协议及版本状态码状态描述(例如:HTTP/1.1200ok)