Loading

「学习笔记」HTTP协议

HTTP 协议

基本介绍

  • HTTP:超文本传输协议,是用于从万维网服务器传输超文本到本地服务器的传送协议,该协议是一种应用层协议,基于 TCP/IP 通信协议来传递数据。
  • 协议:为了使数据能从源头到达目的地,参与各方都要遵守的规则,最终体现为网络上传输的数据包格式。
  • TCP/IP:TCP/IP 是一个协议族,TCP 是传输控制协议,负责可靠的数据传输(如何可靠的把话送达),IP 是网际协议,负责寻址和路由,把数据包从源头发到目的地(如何找到对方)
  • IP:互联网“邮政系统”,为互联网的每一台设备分配一个唯一的逻辑地址,即 IP 地址,根据 IP 地址,通过网络路由器决定数据包的最佳路径,从源头传递到目的地。
  • TCP:在 IP 协议提供的服务之上,提供了可靠的、面向连接的数据传输服务,通过确认机制、超时重传、校验和等方式,确保数据包能完整无误不重复地到达目的地。
    HTTP 负责通信“内容”,TCP/IP 负责通信“过程”。
    HTTPS 是在 HTTP 的基础上做了加密的工作。

HTTP 协议工作过程

当在浏览器输入一个网址时,浏览器会对对应的服务器发送一个 HTTP 请求,而对应的服务器收到请求后,经过计算处理,会返回一个 HTTP 响应,当我们访问一个网站是,可能不止一次的 HTTP 请求和 HTTP 响应交互过程。

  • 客户端:主动发起网络请求的一端。
  • 服务器:被动接受网络请求的一端。
  • 请求:客户端发给服务器的数据。
  • 响应:服务器返给客户端的数据。

HTTP 协议一发一收,一问一答

其他模式:

  • 多发一收,如上传大文件。
  • 一发多收,如搜索一个词汇,得到多条信息。
  • 多发多收。

HTTP 请求 (request)

url

介绍:就是平时俗称的网址,互联网上每个文件都有唯一的 url,包含的信息指出文件的位置以及浏览器如何处理它。

基本格式:

  • 标准格式:协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

  • 完整格式:协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

参数:

  • 协议类型:常见的有 http 和 https,可以省略,省略后默认为 http://
  • 访问资源需要的凭证信息:一般为登录信息,如用户名、密码等,现在的网站一般不在通过 url 进行,一般省略。
  • 服务器地址:可以是一个 IP 地址,也可以是一个域名(域名通过 DNS 解析成一个具体的 IP 地址),HTML 中省略服务器地址就像跟浏览器说“去我自家仓库拿东西”,而不需要每次都说明“去某某地址的仓库拿东西”
  • 端口号:是网络连接的“门牌号”,用于在一台机器上区分不同服务,它让一个 IP 地址可以同时提供多种不同的服务,数据包会根据端口号被准确地分发到对应的应用程序上。端口号可以被省略,省略后浏览器会根据协议自动决定使用哪个端口号。
    (知名端口 0 - 1023 分配给系统级或公认的重大服务。普通程序不应使用;注册端口 1024 - 49151 分配给用户级的应用程序或服务。许多常见软件使用此范围。动态/私有端口 49152 - 65535 一般不固定分配给服务,主要用于客户端的临时连接。)
  • 资源层级 UNIX 文件路径:表示访问该服务器某个资源的路径,省略后相当于 /
  • 文件名:表示访问服务器上哪个资源,不可省略。
  • 查询字符串:查询字符串是 URL 中的“问询部分”,用于向服务器传递额外参数。? 是起始符,& 是间隔符,= 是赋值符。查询字符串可以省略。
  • 片段标识符:主要用于页面内跳转,可以省略。

查询字符串:如果把整个URL路径(/products/electronics)比作你去商场电子产品楼层(一个层级化的位置),那么查询字符串就是你向店员提出的具体需求:https://example.com/products/electronics?category=phone&brand=apple&sort=price_asc
category=phone:我要看手机!
brand=apple:品牌要看苹果的!
sort=price_asc:按照价格排序!

method

方法 说明 试用版本号
GET 获取资源 HTTP 1.0/1.1
POST 传输实体主题 HTTP 1.0/1.1
PUT 传输文件 HTTP 1.0/1.1
HEAD 获得报文首部 HTTP 1.0/1.1
DELETE 删除文件 HTTP 1.0/1.1
OPTIONS 访问支持的方法 HTTP 1.1
TRACE 追踪路径 HTTP 1.1
CONNECT 要求用隧道协议连接代理 HTTP 1.1
LINK 建立和资源之间的联系 HTTP 1.1
UNLINE 断开连接关系 HTTP 1.1

GET

GET 常用于获取服务器上的某个资源。

触发 GET 的方法:

  • 在浏览器输入 URL 回车或在收藏夹内点击链接。
  • HTML 中的 link, img, script 等标签的属性中放的 URL。
  • 使用 Javascript 重点 ajax,也能构造出 HTTP GET 请求。
  • 各种编程语言(只要能够访问网络),就都能够构造出 HTTP GER 请求。

POST

POST 多用于提交用户输入的数据给服务器。

触发 POST 的方法:

  • 通过 HTML 中的 form 标签可以构造 POST 请求。
  • 使用 JavaScript 的 ajax 可以构造 POST 请求。

HOST:表示服务器主机地址和端口。

Content - Length:表示 body 的数据长度,长度单位是字节。

Content - Type:表示 body 的数据格式。

  • application/x-www-form-urlencoded
    这是 form 表单提交的数据格式,此时 body 的格式就类似于 query string(是键值对的结构,键值对之间使用 & 分割,键与值之间使用 = 分割。
  • multipart/form-data
    这是 form 表单提交的数据格式(需要在 from 标签上加上 enctyped="multipart/form-data"),通常用于 HTML 提交图片或者文件。
  • application/json
    此时 body 数据为 json 格式,json 格式就是源自 js 的对象的格式。用一个 { } 括住,里面有多个键值对,键值对之间使用 , 分割,键和值之间使用 : 分割。

User-Agent(简称 UA):用户浏览器或操作系统的属性。

Referer:表示这个页面是从哪个页面跳转过来的。

Cookie:提供一种让程序员在本地存储数据的能力。

关于 Cookie:

Cookie 数据可能是客户端(网页)自行通过 JS 写入的,也可能来自于服务器在 HTTP 响应的 header 中通 Set-Cookie 字段给浏览器返回数据。

一个生动的比喻:会员卡

想象你去一家咖啡店(浏览器 访问 服务器):

首次光临:你点了一杯咖啡。店员说:“办张会员卡吧,记录您的喜好”。你同意了。

这相当于服务器在响应中设置了 Cookie(Set-Cookie 头)。

保存会员卡:你收下了这张卡。
这相当于浏览器收到了 Set-Cookie 指令,并将其保存在本地。

再次光临:下次你来这家店时,主动出示了会员卡。
这相当于浏览器在后续的每个请求中,都会自动在 Cookie 请求头里带上这段数据。

店员认出你:店员看到会员卡,立刻知道你是“王先生,喜欢中烘豆,不加糖”,不用再问一遍。
这相当于服务器收到了 Cookie,从而知道了你的身份和偏好,可以提供个性化服务。

主要用途:

  • 会话管理:保持用户的登录状态
  • 个性化:记录用户偏好,如语言主题、地区设置。
  • 跟踪:分析用户行为,记录用户在不同页面间的浏览路径。常用于广告投放

HTTP 响应 (response)

状态码

状态码表示访问一个页面的结果,是一个三位整数。

状态码 状态 状态解释
200 OK 访问成功
301 Moved Permanently 表示永久重定向
302 Move temporarily 表示临时重定向
403 Forbidden 访问被拒绝
404 Not Found 没找到资源
405 Method Not Allowed 不支持或无法使用请求中的方法
500 Internal Server Error 服务器内部错误
504 Gateway Timeout 服务器负载较大,处理单条请求超时

重定向相当于手机呼号的呼叫转移功能,如果我们换了一个手机号,就可以去办理该呼叫转移业务,使朋友拨打你的旧号码时,自动跳转到新号码

header

Content - Type:

表示 body 的数据形式。

  • text/html:数据格式是 HTML。
  • text/css:数据格式是 CSS。
  • application/javascript:数据格式是 JavaScript。
  • application/json:数据格式是 JSON。
posted @ 2025-10-23 20:18  yi_fan0305  阅读(9)  评论(2)    收藏  举报