美文网首页
请求和响应

请求和响应

作者: 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

    相关文章

      网友评论

          本文标题:请求和响应

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