HTTP的全称是:Hyper Text Transfer Protocol,意为 超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则:问答机制、握手机制。
它规范了请求和响应内容的类型和格式。
HTTP协议是由W3C
组织管理和维护的。
目前HTTP协议主要是1.0版本和1.1版本。这两个版本的区别主要是两个方面。
第一:HTTP1.1版本比1.0版本多了一些消息头。
第二:HTTP1.1版本和1.0版本的执行过程不一样。执行过程如下:
HTTP1.0 | HTTP1.1 |
---|---|
创建连接(TCP/IP) | 创建连接(TCP/IP) |
发送请求 | 发送请求1 |
得到响应 | 得到响应1 |
关闭连接 | 发送请求2 |
创建连接(TCP/IP) | 得到响应2 |
发送请求 | … |
得到响应 | … |
关闭连接 | 连接超时或手动关闭连接 |
HTTP协议概念是客户浏览器和服务器一种一问一答的规则,那么必须要有问有答,而且要先问后答。
但是我们使用<script>
,<link>
和<img>
标签,没有手动发起请求,但是仍然能从服务器端拿到数据,原因就是:在浏览器遇到<script>
,<link>
,<img>
标签时会自动发出请求。
由HTTP协议的概念可知,它分为问和答两部分。其中问指的就是请求部分,而答指的就是响应部分。
请求行: 永远位于请求的第一行
请求消息头: 从第二行开始,到第一个空行结束
请求的正文: 从第一个空行后开始,到正文的结束
响应行: 永远位于响应的第一行
响应消息头: 从第二行开始,到第一个空行结束
响应的正文: 从第一个空行后开始,到正文的结束
消息头名称首字母大写,多个单词每个单词的首字母都大写。
多个单词用-分隔
名称和值之间用冒号加空格分隔
多个值之间用逗号加空格分隔
两个头之间用回车分隔
请求行:GET /myapp/2.html HTTP/1.1
第一:只有post请求方式,才有请求的正文。get方式的正文是在地址栏中的。
第二:表单的输入域有name属性的才会被提交。不分get和post的请求方式。
第三:表单的enctype属性取值决定了请求正文的体现形式。概述的含义是:请求正文的MIME编码类型。
响应行:HTTP/1.1 200 OK
常用状态码介绍:
就和我们在浏览器上右键查看源文件看到的内容是一样的。
<html>
<head>
<link rel="stylesheet" href="css.css" type="text/css">
<script type="text/javascript" src="demo.js"></script>
</head>
<body>
<img src="1.jpg" />
</body>
</html>