HTTP
HTTP概述
HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础,同时,也是一种客户端—服务器(client-server)协议。HTTP 是一种应用层的协议,通过 TCP 或 TLS(一种加密过的 TCP 连接)来发送。
请求是由接受方——通常是 Web 浏览器——发起的。完整网页文档通常由文本、布局描述、图片、视频、脚本等资源构成。客户端与服务端之间通过交换一个个独立的消息(而非数据流)进行通信。由客户端发出的消息被称作请求(request),由服务端发出的应答消息被称作响应(response)。
HTTP消息结构
客户端请求消息(请求包结构)
请求行
方法
如 GET、POST、PUT、DELETE等,指定要执行的操作。
GET请求
用于从服务器获取资源,常用于获取静态资源(网页、图片、文件等等)。
get请求的参数传递方式
在 HTTP 请求中,GET 请求可以通过 URL 参数或者请求体的方式传递参数。
URL 参数:GET 请求可以通过 URL 中指定的 key-value 形式传递参数。
eg.http://example.com/search?q=test&page=2
POST请求
用于向服务器提交数据,通常用于创建、更新或删除资源、上传文件、发送 JSON 数据
post请求的参数传递方式:URL 参数和请求体。
1.URL 参数:POST 请求可以通过 URL 中指定的 key-value 形式传递参数。例如,在访问如下 URL 时:
eg.http://example.com/search?q=test&page=2
2.请求体(仅适用于 POST、PUT、PATCH 请求):当 POST、PUT 或 PATCH 请求的 URL 中没有指定参数时,参数会被放置在请求体中。请求体中的数据可以是表单数据、JSON 数据等。例如,使用 POST 请求将 JSON 数据发送到如下 URL 时:eg.http://example.com/user
请求体中的 JSON 数据如下:
{ "name": "John Doe", "email": "john.doe@example.com" }
ps:
这里稍微提一嘴:在HTML表单提交时,特殊符号如空格、&等应该用html编码后提交,以&为例子,html不会讲&视为普通符号,若A&B是一个要提交的值,直接提交A&B,html则会将其视为A、B两个值,编码为%26则不会,这里就能正常视为一个值。
请求 URI(统一资源标识符)
请求的资源路径,通常包括主机名、端口号(如果非默认)、路径和查询字符串。
请求头
包含了客户端环境信息、请求体的大小(如果有)、客户端支持的压缩类型等。
常见的请求头包括Host、User-Agent、Accept、Accept-Encoding、Content-Length等。
注:POST 请求(包含 HTML 表单数据)需要主体
主体大致可分为两类:
1.单一资源(Single-resource)主体,由一个单文件组成。该类型的主体由两个标头定义:Content-Type和Content-Length
2.多资源(Multiple-resource)主体,由多部分主体组成,每一部分包含不同的信息位。通常是和 HTML 表单连系在一起。
Host
指定请求的服务器的域名和端口号。
User-Agent
包含发出请求的用户代理(浏览器)的信息,可用来浏览器伪造。
eg.
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
其中:
浏览器:Mozilla/5.0
操作系统:Windows NT 10.0
平台:Win64; x64
浏览器核心:AppleWebKit/537.36
浏览器名称:Chrome
浏览器版本:58.0.3029.110
渲染引擎:Safari/537.36
Accept
指定客户端能够处理的媒体类型。
Accept-Language
指定客户端偏好的语言。
Accept-Encoding
指定客户端能够处理的压缩算法。
Authorization
用于身份验证的凭证。
X-Forwarded-For
好用捏,不多说自行体会QAQ
cookie
也是进行身份验证的头。ps:曲奇好吃捏
协议 
路径
/path/to/myfile.html 、/index.html是 Web 服务器上资源的路径。
参数
?key1=value1&key2=value2 是提供给 Web 服务器的额外参数(参数是用 & 符号分隔的键/值对列表) 。
锚点
#SomewhereInTheDocument 是资源本身的另一部分的锚点
锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向
# 后面的部分(也称为片段标识符)不会随请求被发送到服务器
Leave a comment