美文网首页
请求和响应

请求和响应

作者: YjjTT | 来源:发表于2018-12-11 17:27 被阅读0次

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

相关文章

  • 从一个例子了解请求和响应中的参数

    HTTP 协议规定了请求和响应的格式和行为,这里通过分析百度首页的请求和响应,来了解请求和响应中的各种参数。浏览器...

  • 请求和响应

    Server(服务端)、Client(客户端) 浏览器发出请求,服务器在80端口接收请求;服务器返回内容(响应),...

  • 请求和响应

    Django REST framework 处理请求和响应有以下几个关键点。 1. 请求对象(Request ob...

  • 请求和响应

    HttpServletRespone对象: 应用: HttpServletRequest对象: 应用: Reque...

  • 请求和响应

    WWW的发明 1989年-1992年, Tim Berners-Lee(李爵士), 发明了WWW(World Wi...

  • 请求和响应

    请求对象(Request objects)拓展了Django自带的HttpRequestRequest对象的核心功...

  • 请求和响应的装饰

    请求和响应的装饰 Servlet API 中有4个包装类,可以用来改变Servlet请求和Servlet响应的行为...

  • 网络基础与 Node.js Server

    网络基础 网络与 IP 前面说了,请求和响应都是遵循 HTTP 协议的,HTTP 只是规定了请求和响应时那 4 个...

  • HTTP简单认识

    1、HTTP的请求和响应 HTTP的请求和响应都包含4个部分,在命令行输入curl -v www.baidu.co...

  • 一次完整的HTTP请求与响应涉及面有多广?

    本文以HTTP请求和响应的过程来讲解涉及到的相关知识点。 一、 HTTP请求和响应步骤 图片来自:理解Http请求...

网友评论

      本文标题:请求和响应

      本文链接:https://www.haomeiwen.com/subject/wbuehqtx.html