HTTP 初步认识

HTTP 初步认识

什么是 HTTP?

HTTP 是一个简单的请求-响应协议

中文名: 超文本传输协议

全称: Hypertext Transfer Protocol

简单来说, HTTP , 两个电脑之间传输内容的协议;HTTP 的作用是让你能下载这个页面。

在1990年,HTTP就成为WWW的支撑协议。当时由其创始人WWW之父蒂姆·贝纳斯·李(TimBerners—Lee)提出。

HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。

HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、InternetExplorer、Google chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。

HTTP 请求

HTTP 请求包括哪些部分

请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)

例如,在命令行中, 使用 curl 发一个请求

curl -s -v -H "xxx:yyy" -- "https://www.baidu.com"

用 curl 创造一个请求,并得到响应

主要关注 ‘>’ 后的内容,

GET / HTTP/1.1 //动词路径协议/版本

Host: www.baidu.com //Key1: value1
User-Agent: curl/7.73.0 //Key2: value2
Accept: / //Key3: value3
xxx:yyy //属于自己编辑的,没有实际意义的信息

请求的格式
1 动词路径协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3 
4 要上传的数据
  1. 请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
  2. 第三部分永远都是一个回车(\n
  3. 动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
  4. 这里的路径包括「查询参数」,但不包括「锚点」
  5. 如果你没有写路径,那么路径默认为 /
  6. 第 2 部分中的 Content-Type 标注了第 4 部分的格式
使用Chrome开发者工具查看 HTTP 请求内容
  1. 在网页的页面上, 右键 ‘检查’
  2. 点击 Network
  3. 地址栏输入网址
  4. 在 Network 点击,查看 request,点击「view source」
  5. 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到

HTTP响应

响应示例,上面的 GET 请求,

查看响应格式

响应的格式

1 协议/版本号状态码状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容

第 2 部分中的 Content-Type 标注了第 4 部分的格式
第 2 部分中的 Content-Type 遵循 MIME 规范
状态码

状态码需要记忆

  • 1xx 不常用
  • 2xx 表示成功
  • 3xx 表示滚吧
  • 4xx 表示你丫错了
  • 5xx 表示好吧,我错了

HTTP状态码详细查询

使用Chrome开发者工具查看 HTTP 响应内容
  1. 打开 Network
  2. 输入网址
  3. 选中第一个响应
  4. 查看 Response Headers,点击「view source」
  5. 你会看到响应的前两部分
  6. 查看 Response 或者 Preview,你会看到响应的第 4 部分

如何使用 curl 命令

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

curl命令语法:
curl [options] [URL...]

例如上文用到的

curl -s -v -H "xxx:yyy" -- "https://www.baidu.com"

-s //安静模式下显示错误信息

-v //显示更详细的信息,调试时使用;

-H

-H "name: value" //(HTTP)添加一个http header(http请求头);

本文参考自:

curl 的用法指南--阮一峰

Linux curl命令详解

HTTP 教程

HTTP协议详解

posted @ 2021-02-18 03:18  阿骏的程序员之路  阅读(104)  评论(0)    收藏  举报