请求和响应

2018-12-11  本文已影响0人  YjjTT

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, 帮你解析的服务器就是DNS服务器

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

image image

请求与响应

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 请求

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

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

请求的格式

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

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, 所以第五部分会返回很抱歉,您要访问的页面不存在!

响应的格式

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
上一篇下一篇

猜你喜欢

热点阅读