HTTP请求(Request)
请求:
- 首行
- 请求头
- 空行
请求,就是客户端(浏览器)给服务器发起的一个数据。
这里要明确描述出,要访问的服务器是啥,要访问的服务器的资源是啥
认识URL
URL基本格式
平时我们俗称的 “网址” 其实就是说的 URL (Uniform Resource Locator 统一资源定位符).
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它.
URL 的详细规则由 因特网标准RFC1738 进行了约定。(https://datatracker.ietf.org/doc/html/rfc1738)
一个具体的 URL:
https://v.bitedu.vip/personInf/student?userId=10000&classId=100
可以看到,在这个 URL 中有些信息被省略了.
https
: 协议方案名. 常见的有 http 和 https, 也有其他的类型. (例如访问 mysql 时用的jdbc:mysql )user:pass
: 登陆信息. 现在的网站进行身份认证一般不再通过 URL 进行了. 一般都会省略v.bitedu.vip
: 服务器地址. 此处是一个 “域名”, 域名会通过 DNS 系统解析成一个具体的 IP 地址. (通过 ping 命令可以看到,v.bitedu.vip
的真实 IP 地址为118.24.113.28
)- 端口号: 上面的 URL 中端口号被省略了. 当端口号省略的时候, 浏览器会根据协议类型自动决定使用哪个端口. 例如 http 协议默认使用 80 端口, https 协议默认使用 443 端口
/personInf/student
: 带层次的文件路径userId=10000&classId=100
: 查询字符串(query string). 本质是一个键值对结构. 键值对之间使用& 分隔. 键和值之间使用 = 分隔- 片段标识: 此 URL 中省略了片段标识. 片段标识主要用于页面内跳转. (例如 Vue 官方文档: https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5, 通过不同的片段标识跳转到文档的不同章节)
关于 query string
query string 中的内容是键值对结构. 其中的 key 和 value 的取值和个数,完全都是程序猿自己约定的. 我们可以通过这样的方式来自定制传输我们需要的信息给服务器.
URL中 的可省略部分
- 协议名: 可以省略, 省略后默认为 http://
- ip 地址 / 域名: 在 HTML 中可以