HTTP简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
1. HTTP协议的主要特点
- 简单快速
- 无连接
- 无状态
2. URL
URL:Uniform Resource locator 统一资源定位,我们在浏览器的地址栏里输入的网站地址就叫做URL,URL描述了一台特定服务器上某资源的特定位置,也就是我们每个人家里的门牌号。它们可以明确说明如何从一个精确、固定的位置获取资源。
举个例子,看如下的URL链接:
https://www.weibo.com:8080/AAA/index.jpg
链接由下面的几部分组成:
- 协议:协议有多种,常见的有http以及https,上面的例子使用的就是https,该部分代表超文本传输的协议,后面是使用 // 来区分后面的域名部分。
- 域名:这里的域名是www.weibo.com,也可以使用IP地址作为域名使用,如192.168.1.5。一般用域名比较方便查看记忆,同时也便于隐藏我们的id,比较安全。
- www:代表一个Web(万维网)服务器;
- weibo.com/:这部分就是网页的服务器的域名,或站点服务器的名称;
- AAA/:这部分是服务器上的子目录,就好像我们的文件夹;
- Index.jpg:index.jpg是文件夹中的一张图片信息
- 端口:这里跟在域名后面的‘8080’是端口部分,这部分是可有可无的。
3. HTTP请求报文
一个 HTTP 请求,包含 4 个部分。
- 请求行
- 请求头
- 空行
- 请求数据
下图是请求报文的格式:
下面是一个 GET 请求的示例:
GET /index.html?a=1&b=2 HTTP/1.1
Host: localhost.charlesproxy.com:3000
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/74.0.3729.131 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,
application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: _ga=GA1.2.448607888.1557887884; _gid=GA1.2.2022442462.1557887884
Connection: keep-alive
- HOST :服务器的域名。
- User-Agent :浏览器的浏览器身份标识字符串。
- Accept:能够接受的回应内容类型( Content-Types )。
- Accept-Encoding:能够接受的编码方式列表。
- Accept-Language:能够接受的回应内容的自然语言列表。
- Cookie:之前由服务器通过 Set- Cookie 发送的一个超文本传输协议 Cookie。
- Connection:该浏览器想要优先使用的连接类型。
4. HTTP响应报文
HTTP响应报文由四部分组成: 状态行, 响应头部, 空行, 响应正文。
下面给出响应报文的格式:
响应报文示例:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
Server:Apache Tomcat/4.0-b1(HTTP/1.1Connector)
Conection:close
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
4.1 状态码
| 1** | 信息,服务器收到请求,需要请求者继续执行操作 |
|---|---|
| 2** | 成功,操作被成功接收并处理 |
| 3** | 重定向,需要进一步的操作以完成请求 |
| 4** | 客户端错误,请求包含语法错误或无法完成请求 |
| 5** | 服务器错误,服务器在处理请求的过程中发生了错误 |