HTTP 全称是 Hyper Text Transfer Protocol 即:超文本传输协议
HTTP 是应用层协议
HTTP 是一个基于请求/响应模式的、无状态的协议 (Request/Response)
一个完整的URL
URL (Uniform Resource Locator) 用于描述一个网络上的资源
基本格式如下 :
schema://host[:port#]/path/…/[?query_string][#anchor]
字段 | 解释 |
---|---|
schema | 指定低层使用的协议(例如:http, https, ftp) |
host | HTTP服务器的IP地址或者域名 |
port# | HTTP服务器的默认端口是80, 这种情况下端口号可以省略。如果使用了别的端口, 必须指明, 例如 //www.greatytc.com/:8080/ |
path | 访问资源的路径 |
query_string | 发送给http服务器的数据 |
anchor | 锚 |
一个URL :
HTTP的Request/Response
Request的结构
Request的结构如下图所示 :
在MAC上我使用
Charles
来抓包.
Headers中常出现的字段
Accept
浏览器端可以接受的媒体类型 (通配符 * 代表任意类型)
例如: Accept: / 代表浏览器可以处理所有类型 (通常情况下都是这个)Content-Type
内容类型?
例如: Content-Type: application/x-www-form-urlencodedAccept-Encoding
浏览器申明自己接收的编码方法, 通常指定压缩方法, 是否支持压缩, 支持什么压缩方法(gzip,deflate)
注意:这不是指字符编码
例如: Accept-Encoding: gzipUser-Agent
告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本-
Connection
例如: Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。
Content-Length
发送给HTTP服务器数据的长度
例如: Content-Length: 38Host (发送请求时,该Header是必需的)
请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的Cookie
最重要的header, 将cookie的值发送给HTTP 服务器
Response的结构
有下图可以参考 :