请求和响应

WWW的发明

1989年-1992年, Tim Berners-Lee(李爵士), 发明了WWW(World Wide Web), 一种适用于全世界的网络, 其次还发明了第一个服务器, 第一个浏览器, 第一个网页, 发明了互联网的雏形

主要包含以下三个概念:

  1. URL, 俗称网址(还有URI, URN)
  2. HTTP, 两个电脑直接传输内容的协议
  3. HTML, 超级文本, 用来做页面跳转

URL的作用是能让你访问一个页面, HTTP的作用是让你能下载这个页面, HTML的作用是让你能看懂这个页面

URL

一个URL通常由以下几部分组成, 其实还有个端口,只是浏览器给隐藏掉了,默认是80端口

image

baidu.comwww.baidu.com 不是同一个域名, 但是都有同一个二级域名

.com 是顶级域名, baidu 是二级域名, www 是三级域名

DNS

Domain(域) Name(名) System(系统)

  • 输入域名

访问域名: 我问路由, 然后路由去问电信该域名的ip是多少, ip是会变的, 因为百度的服务器有几万台.

  • 输出IP

电信会帮你解析该域名的ip, 帮你解析的服务器就是DNS服务器

DNS服务器会存储资源, 例如主机记录, 别名记录, IP主机记录等

image
image

请求与响应

  • Server : 服务器,也就是你的电脑。
  • Client :客户端,也就是你的浏览器。
  • HTTP :服务器和浏览器之间通信的协议,指导如何进行沟通。
  • 浏览器负责发起请求
  • 服务器在80端口接收请求
  • 服务器负责返回内容(响应)
  • 浏览器负责下载响应内容

curl请求的使用

curl是 一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。

列举几种常用的带参数的curl命令

curl "http://example.com" -o filename # 将下载的内容写到文件中 output

curl "http://example.com" > filename # 同上

curl -O "http://example.com/filename" # 下载文件(.jpg, .png等),并保留远程文件名 remote-name

curl -L "http://example.com/filename" # Location redirects 重定向

curl -s -v -H -- "http://example.com/filename" 
# -s 静音模式,不显示下载进度等其他的东西; 
# -v verbose 用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用;
# -H 自定义header头信息传递给服务器, 添加响应头
# GET 请求

curl -d 'name=yjjtt' "http://example.com/filename" # -d data,POST请求传递数据
curl -X POST -d 'name=yjjtt' "http://example.com/filename" # -X 指定POST request, -d data

# 其他的自行google linux curl就好了

curl 请求

  • 请求最多包含四部分, 最少包含三部分, 第四部分可以为空, 第四部分是要上传的数据
  • 第三部分永远是一个回车
  • 第一部分的路径不包含锚点, 如果没有写路径默认为/
  • 第二部分的Content-Type标注了第四部分的格式

具体参照下面的例子来分析:

GET

命令行输入该命令,curl -s -v -H "yjjtt: xxx" -- "https://www.baidu.com"

image

上图就是curl请求的内容

  1. GET / HTTP/1.1 : GET代表动词(GET, POST, PUT,DELETE , PATCH, HEAD, OPTIONS); /代表路径,当网址后面加上绝对路径时会显示,不加则显示/;HTTP/1.1代表协议/版本
  2. 第二部分是图中所有的key:value, 2-5行都是
  3. 第三部分是回车
  4. 第四部分为空

POST

命令行输入该命令,curl -X POST -s -v -H "yjjtt: xxx" -- "https://www.baidu.com"

image
  • GET和POST的请求格式一样

请求的格式

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 /n回车

4 要上传的数据

curl响应

  • 响应包含四部分, 第四部分为要下载的内容, 可以很长很长
  • 状态码要背, 是服务器对浏览器说的话

200 普通成功 204 创建成功
301 滚 永久不存在 location会告诉新地址
302 临时不存在
404 页面不存在, 浏览器错误
502 服务器错误 server taskcenter start/stop

  • 第二部分的Content-Type 标注了第四部分的格式
  • 第 2 部分中的 Content-Type 遵循 MIME 规范

GET

image

上图就是GET请求的响应内容

  1. 第一部分: HTTP/1.1 协议/版本, 200状态码, OK状态解释
  2. 第二部分: key:value
  3. 第三部分: 回车
  4. 第四部分: 要下载的内容,百度首页的HTML, 由第二部分的Content-Type决定, 如果将第二部分Content-Type的value改成text/htlm,将会报错

POST

image

上图出现302 状态码, 是因为百度首页不支持POST, 所以第五部分会返回很抱歉,您要访问的页面不存在!

  • GET和POST请求对应的响应可以一样,也可以不一样
  • 响应的第四部分很长很长

响应的格式

1 协议/版本 状态码 状态解释

2 key1: value1

2 key2: value2

2 key3: value3

2 Content-type: text/html

2 Host: www.baidu.com

2 Content-Length: 17931

3 /n回车

4 要下载的内容

使用Chrome发GET请求

www.baidu.com为例

  1. Chrome浏览器输入www.baidu.com访问
  2. 右键检查,选择NetWork,刷新页面
  3. 选中第一个响应
  4. 查看Headers中的Request Headers, 点击view source
image
  1. 如上图可以看到请求的三部分

  2. 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到

使用Chrome查看GET请求的响应

同样以www.baidu.com为例

  1. Chrome浏览器输入www.baidu.com访问
  2. 右键检查,选择NetWork,刷新页面
  3. 选中第一个响应
  4. 查看Headers中的Response Headers, 点击view source
image
  1. 如上图可以看到响应的三部分

使用Chrome发POST请求

同样以www.baidu.com为例, 需要先退出百度账号的登录,然后进行登录, 因为登录是POST的请求

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

推荐阅读更多精彩内容

  • HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发...
    小七奇奇阅读 1,373评论 0 3
  • HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发...
    shenyoujian阅读 359评论 0 0
  • Server(服务端)、Client(客户端) 浏览器发出请求,服务器在80端口接收请求;服务器返回内容(响应),...
    xiaoxinwan阅读 265评论 0 0
  • 服务器和浏览器的交互 浏览器负责发起请求 服务器在80端口接收请求 服务器负责返回内容(响应) 浏览器负责下载响应...
    secret123阅读 376评论 0 0
  • 1.HTTP工作原理 HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即...
    Mo_dao阅读 360评论 0 5