1.什么是HTTP?
HTTP(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为普遍的一种网络传输协议,全部的WWW文件都必须遵照这个标准。linux
HTTP是一个基于TCP/IP通讯协议来传递数据(HTML 文件, 图片文件, 查询结果等)。浏览器
2.HTTP的工做原理是什么?是作什么用的?
HTTP 的做用就是指导浏览器和服务器如何进行沟通。服务器
简单的工做原理是:cookie
- 浏览器负责发起请求
- 服务器在 80 端口接收请求
- 服务器负责返回内容(响应)
- 浏览器负责下载响应内容
注意:
- HTTP是无链接:无链接的含义是限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间。
- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据均可以经过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。(更多关于的MIME-type内容类型的信息,本身搜索)
- HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。另外一方面,在服务器不须要先前信息时它的应答就较快。
3.HTTP 请求包括哪些部分?如何用Chrome开发者工具查看 HTTP 请求内容?
请求的格式:
第一部分:动词 路径 协议/版本
第二部分:Key1: value1
Key2: value2
... ...
Key n: value n
第三部分:
第四部分:要上传的数据网络
注意:
- 请求最多包含四部分,最少包含三部分。(也就是说第四部分能够为空)
- 第三部分永远都是一个回车(\n),用来区分第二部分和第四部分
- 动词也是请求方法,有 GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS 等 (HTTP1.1)
- GET: 从服务器获取内容
- POST: 向服务器新增,上传内容
- PUT: 总体更新,新上传的内容覆盖以前上传的全部内容
- PATCH: 局部更新,将以前上传的部份内容替换为新上传的内容
- DEMETE: 删除
- HEAD: 相似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- OPTIONS: 容许客户端查看服务器的性能。
咱们实际应用中经常使用到的只有 GET 和 POST,发出的请求包含数据就用 POST,不包含数据就用 GET。curl
-
这里的路径必须以 / 开头,它包括「查询参数」,但不包括「锚点」。若是你没有写路径,那么路径默认为 /
工具
-
第 2 部分中的 Content-Type 标注了第 4 部分的格式性能
使用Chrome开发者工具查看 HTTP 请求内容
- 打开 浏览器
- 右键空白处,点击 [检查]
- 点击上面一排中的 [Network]
- 地址栏输入网址,回车,在 Network 中会出现不少请求,点击请求的名称。
- 点击 [Request Headers],点击 [view source],你就会看到请求的前三部分。
- 若是有请求的第四部分,那么在 FormData 或 Payload 里面能够看到。
4.HTTP 响应包括哪些部分,如何用Chrome开发者工具查看 HTTP 响应内容?
响应的格式:
第一部分: 协议/版本号 状态码 状态解释
第二部分:Key1: value1
Key2: value2
... ...
Key n: value n
第三部分:
第四部分:要下载的内容测试
注意:
- 状态码要背,是服务器对浏览器说的话
- 1xx: 表示信息,服务器收到请求,须要请求者继续执行操做,不经常使用
- 2xx: 表示成功,操做被成功接收并处理;200:普通成功(GET) 204:建立成功(POST)
- 3xx: 表示重定向,须要进一步的操做以完成请求;301:永久的搬走了,第二部分会给个location:是搬过去的地 址 302:临时的不存在 304:这一次的内容和上一次的内容同样
- 4xx: 表示客户端错误,请求包含语法错误或没法完成请求 404
- 5xx: 表示服务器错误,服务器在处理请求的过程当中发生了错误 50二、500
更多的状态码点这里。
- 状态解释没什么用
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
- 第 2 部分中的 Content-Type 遵循 MIME 规范
如何用Chrome开发者工具查看 HTTP 响应内容
- 打开 浏览器
- 右键空白处,点击 [检查]
- 点击上面一排中的 [Network]
- 地址栏输入网址,回车,在 Network 中会出现不少请求,点击请求的名称。
- 点击 [Responses Headers],点击 [view source],你就会看到响应的前三部分。
- 响应的第四部分在 Responses 里面能够看到。
如何使用 curl 命令
curl命令是一个利用URL规则在命令行下工做的文件传输工具。它支持文件的上传和下载,因此是综合传输工具,但按传统,习惯称curl为下载工具。做为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。作网页处理流程和数据检索自动化,curl能够祝一臂之力。网络传输协议
语法:curl(选项)-- "请求的网址" (注意 -- 后有一个空格)
选项:此处仅仅举例,更多内容点这里。
- -a : 上传文件时,附加到目标文件
- -d : HTTP POST方式传送数据
- -G : 以get的方式来发送数据
- -H : 自定义头信息传递给服务器
- -s : 静默模式。不输出任何东西
- -v : 使提取更加冗长/啰嗦。主要用于调试。
- -X : 指定什么命令
... ...
使用:
curl命令能够用来执行下载、发送各类HTTP请求,指定HTTP头部等操做。若是系统没有curl可使用yum install curl安装,也能够下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用--silent选项。对于测试来说,它是Web相关测试很是实用的工具,包括debugging,使用起来很是方便。
这只是HTTP入门,还有不少知识本文没有提到,后期会继续补充,若是本文对你有帮助,请推荐给更多须要帮助的人。