HTTP请求与相应

HTTP简介

HTTPHypertext Transfer Protocol,超文本传输协议 )是在万维网上进行通信时所使用的协议方案。HTTP 有很多应用,但最著名的是用于 Web 浏览器和 Web 服务器之间的双工通信。

——HTTP权威指南

这是HTTP权威指南中对HTTP的解释。对于已经了解HTTP的人来说足够言简意赅,但对于初学者来说,还是有些生涩,超文本是个啥?协议又是个啥?双工通信是个啥?理解起来,要绕上一圈,还是不能直截了当的理解。

那么,有没有更好的方式了解HTTP到底是什么东西呢?

语文学的好的同学,则好理解的多。提取主谓宾,就可以知道,“HTTP+是+协议方案”。那么,知道到了HTTP是个协议方案以后。又该怎么理解呢,为什么网络通信要用这个协议方案呢?这个协议的内容是个啥呢?这个就说来话长了,下面为大家稍微讲解~

首先拿一个最常见的例子来说,先看下图


浏览网页的一个完整过程(图源HTTP权威指南)

生活中,我们上网的一个过程:

  1. 用户使用客户端输入网址或者IP地址;
  2. 客户端服务器发送请求信息;
  3. 服务器客户端发送响应信息;
  4. 客户端下载服务器响应的信息内容;
  5. 用户看到了网页

客户端(暂且理解为浏览器)
服务器(暂且理解保存处理数据的机器)

看完了一个生活中使用网站时,发生的整个过程。那HTTP在当中到底是起到什么作用呢?
不就是很简单的 发送请求 --> 回复响应 -> 接受响应 的一个过程么。HTTP是不是这么简单呢?

再尝试深入思考一下

  • 客户端发送请求的内容是什么呢?
  • 怎么发送呢?
  • 怎么让服务器知道我想要什么内容呢?
  • 服务器怎么判断客户端发来的请求想要的是什么呢?
  • 客户端怎么知道服务器响应回来的是什么内容呢?
  • 此处省去一万字...

想解开这些疑惑,这就得深入理解一下HTTP请求、HTTP响应的内容了。

HTTP请求


HTTP请求格式

第一部分:动词 路径 协议/版本
第二部分:
key1:value1
key2:value2
Content-Type:xxxx/xxx
Host:www.xxxx.com
第三部分:
第四部分: 要上传的数据内容

  • 请求包含四部分,也可以只包含三部分。(第四部分可以为空的)

  • 第一部分:

    1. 动词,动词有 GET(获取)、POST(上传)、PUT(正题更新)、PATCH(区域更新)、DELETE(删除)、HEADOPTIONS
    2. 路径,如果你没有写路径,那么路径默认为 /
    3. 协议/版本,请求信息的协议和版本号
    4. 一般为第一行内容
  • 第二部分:

    1. 第二部分为请求元信息 ,中间用冒号隔开的信息列表。
    2. key1、key2为举例说明格式,无其他意义。
    3. Content-Type 标注了第 4 部分的格式。
  • 第三部分: 第三部分永远都是一个回车(\n)

  • 第四部分:要上传的数据内容,可以为空。

Chrome浏览器查看HTTP请求

我们就用访问百度这个网站的例子说明格式

  1. 打开浏览器(我都用的是Chrome);
  2. 直接右键点击选中检查(Ctrl+Shift+I) 或者直接按下F12键;
  3. 弹出浏览器的检查模式,在第一排导航中,找到 Network 选中;
  4. 输入输入网址 https://www.baicu.com 确定;
  5. 在检查模式刷新的列表中,找到排第一的www.baidu.com 点击;
  6. 点击之后进入,右边栏目headers中找到 Resquest Headers 点击展开
  7. 展开Resquest Headers内容后,然后点击旁边的 view source
  8. 这时,Resquest Headers内容就变为HTTP的请求内容
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: xxxxxxxx

好了,到此为止,就可以看到上面HTTP请求的前面三部分内容了。如果有第四部分,则在FormData或者Payload中。

如果想在深入了解,各个部分的代码是表示什么,第一部分的GET什么意思呀?第二部分的Host、connection等等什么意思呀?就得更加地深入学习HTTP了,查询文档和规范,看关于的HTTP书籍,看关于详解HTTP的博客等等,这里只浅解HTTP,让你理解什么是HTTP。

HTTP响应


HTTP响应格式

第一部分:协议/版本号 状态码 状态解释
第二部分:
key1:value1
key2:value2
Content-Length: 17931
Content-Type:xxx/xxx
第三部分:
第四部分: 要下载的数据内容

  • 状态码要背,是服务器对浏览器说的话
    ○ 1xx 不常见
    ○ 2xx 代表成功 ——200,普通成功;204,创建成功;
    ○ 3xx 表示资源不在这,去的地方找——301,永久不纯在。302,临时不纯在。
    ○ 4xx 表示你的操作有错误——用户方出错
    ○ 5xx 表示服务器端有错误——服务器放出错

  • 状态解释就是告诉你一下信息,比如成功了、失败了等等信息。

  • 第 2 部分中的 Content-Type 标注了第 4 部分的格式

  • 第 2 部分中的 Content-Type 遵循 MIME 规范

Chrome浏览器查看HTTP响应

继续拿访问百度来说明,

  1. 打开浏览器(我都用的是Chrome);
  2. 直接右键点击选中检查(Ctrl+Shift+I) 或者直接按下F12键;
  3. 弹出浏览器的检查模式,在第一排导航中,找到 Network 选中;
  4. 输入输入网址 https://www.baicu.com 确定;
  5. 在检查模式刷新的列表中,找到排第一的www.baidu.com 点击;
  6. 点击之后进入,右边栏目headers中在找到 Response Headers 点击展开
  7. 展开Response Headers内容后,然后点击旁边的 view source
  8. 这时,Response Headers内容就变为HTTP的请求内容
  9. 第四部分在response中。
HTTP/1.1 200 OK
Bdpagetype: 2
Bdqid: 0xba22dd350002b473
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Mon, 04 Jun 2018 09:24:10 GMT
Expires: Mon, 04 Jun 2018 09:24:10 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=206; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=26525_1443_21081_26350_20930; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

以上,大概能够理解HTTP请求与响应的一个过程。


CURL

最后,介绍一个快速能够查看请求与响应过程的范式。直接用命令行查访问一个网站的请求和响应的过程,使用 curl 命令

curl命令是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)上面。

——微风伏面

首先,尝试一下,使用curl 命令访问百度,在git bash(windows用户)中输入:

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

-s 静默模式,不输出任何东西
-v 参数可以显示一次 http 通信的整个过程,包括端口连接和 http request 头信息。

显示的信息只找到 >< 开头的行, > 表示请求的命令行,<表示响应的命令行。*号表示注释。


> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.55.0
> Accept: */*
>

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Mon, 04 Jun 2018 10:15:26 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<

以上为以使用命令curl,访问一个网站的请求与响应的命令行。相对于使用浏览器操作步骤查看来说,使用命令行,只需要输入curl的命令内容,更加快捷。当前,前提是你得学会使用命令行。

curl更深入学习


好了,HTTP粗浅了解,到这里就结束了~想要更加深入学习HTTP,则需要付出更多的学习时间和精力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容