前言:
序列:HTTP - 002
1.请求格式
1.1标椎格式
HTTP请求是字符串的格式传输,具体包含以下四部分:
- 首行:[方法]+[url]+[版本号],分别使用空格分隔;
- 请求头(Header):请求的属性,每个键值对独占一行,冒号+空格来分割键和值;
- 空行:遇到空行表示Header部分结束;
- 正文(Body):空行后面的内容都是Body,Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度;
1.2图解
具体的请求格式分布如图:
2.请求行(首行)
1.1URL
(1)概念
我们平时俗称的“网址”其实就是说的URL(Uniform Resource Locator统一资源定位符)。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
例如这是一个百度的网址,其实也就是百度的URL。
(2)基本格式
一个URL的基本格式如下:
拆解上述图中的URL,格式分段详解:
- 协议方案名:https,常见的有http和https,也有其他的类型。(例如访问 mysql 时用的jdbc:mysql)
- 登陆信息:user:pass,现在的网站进行身份认证一般不再通过URL进行了,一般都会省略。
- 服务器地址:www.example.jp,此处是一个“域名”,域名会通过DNS系统解析成一个具体的IP地址。
- 端口号:80,当端口号省略的时候,浏览器会根据协议类型自动决定使用哪个端口。例如http协议默认使用80端口,https协议默认使用443端口。
- 带层次的文件路径:/dir/index.htm。
- 查询字符串(query string):uid=1,本质是一个键值对结构,键值对之间使用&分隔,键和值之间使用=分隔。
- 片段标识:ch1,片段标识主要用于页面内跳转。
(3)可省略部分
在日常开发中很多时候URL可以省略部分内容。
- 协议名:可以省略,省略后默认为 http://;
- ip 地址/域名:在 HTML 中可以省略(比如 img, link,script,a标签的 src 或者 href属性).省略后表示服务器的 ip/域名与当前 HTML 所属的 ip/域名一致;
- 端口号:可以省略,省略后如果是 http 协议,端口号自动设为 80:如果是 https 协议,端口号自动设为443;
- 带层次的文件路径:可以省略.省略后相当于/.有些服务器会在发现/路径的时候自动访问/index.html;
- 查询字符串:可以省略;
- 片段标识:可以省略;
1.2Method(方法)
(1)方法
(2)GET方法
(3)POST方法
(4)其他方法
2.请求头(报头)
3.