美文网首页
HTTP的请求与响应

HTTP的请求与响应

作者: tolstory | 来源:发表于2018-10-14 19:50 被阅读0次

    HTTP(Hyper Text Transfer Protocol)超文本传输协议。是用于从WWW服务器传输超文本到本地浏览器的传输协议。它采用了请求与响应的模式。今天就来总结一下关于HTTP请求与响应的知识。

    整个过程如下:

    1. 浏览器负责发起请求。
    2. 服务器在80端口接收请求。
    3. 服务器负责返回内容(响应)
    4. 浏览器负责下载响应内容。

    一、 请求

    1.请求示例:
    在Git中输入curl指令,获取网页内容。

    curl -s -v -H " xxx: Hello World " -- "https://www.baidu.com"
    

    请求内容如下

    GET / HTTP/1.1
    Host: www.baidu.com
    User-Agent: curl/7.61.1
    Accept: */*
    xxx: Hello World
    
    1. 将请求方式改为POST。示例:
    curl -X POST -s -v -H "sw: Hello World" -- "https://www.baidu.com"
    

    请求内容如下:

     POST / HTTP/1.1
     Host: www.baidu.com
     User-Agent: curl/7.61.1
     Accept: */*
    sw: Hello World
    
    

    3.请求方式为post并且在该请求中发送指定的数据,示例:

    curl -X POST -d "123" -s -v -H "sw: Hello World" -- "https://www.baidu.com"
    

    请求内容如下:

    POST / HTTP/1.1 
    Host: www.baidu.com
    User-Agent: curl/7.61.1
    Accept: */*
     sw: Hello World
    Content-Length: 3
    Content-Type: application/x-www-form-urlencoded
    
    [3 bytes data] // -d: 123
    
    1. 请求的具体格式:
      由以下四部分组成
      第一部分: 动词 路径 协议/版本号
      第二部分:
      Key1: value1
      Key2: value2
      Key3: value3
      Content-Length: 3
      Content-Type: application/x-www-form-urlencoded
      第三部分:回车
      第四部分:需要上传的数据

    常见的几个动词如下:
    GET:请求指定的页面信息,并返回实体主体。
    HEAD:只请求页面的首部。
    POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
    PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
    DELETE: 请求服务器删除指定的页面。
    PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
    OPTIONS: 允许客户端查看服务器的性能。

    1. 如何在Chrome中查看HTTP请求内容?
      (1)打开浏览器自带的开发者工具查看(这里以百度为例子),进入Network中查看。
      (2)输入完整的URL地址。
      (3)在Network中查看第一个请求的request,并且点击view source就能看到以下截图。


      Chrome中查看请求内容

    二、响应

    1. 与上一章请求示例1中对应的响应如下:
    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: Sun, 14 Oct 2018 11:25:30 GMT
    Etag: "58860429-98b"
    Last-Modified: Mon, 23 Jan 2017 13:24:57 GMT
    Pragma: no-cache
    Server: bfe/1.0.8.18
    Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
    
    { [2443 bytes data]
    

    需要说明的是最后一行显示的是要下载的内容,这里进行了省略。

    1. 与示例2对应的响应如下:
     HTTP/1.1 302 Found
     Connection: Keep-Alive
     Content-Length: 17931
     Content-Type: text/html
     Date: Sun, 14 Oct 2018 11:30:29 GMT
     Etag: "54d9748e-460b"
     Server: bfe/1.0.8.18
    
    { [3824 bytes data]
    
    1. 响应的格式

    第一部分:协议/版本号 状态码 状态解释
    第二部分:
    Key1: value1
    Key2: value2
    Content-Length: 17931
    Content-Type: text/html

    常见的几个状态码:
    1xx:这一类型的状态码,代表请求已被接受,需要继续处理。
    2xx:这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
    3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求。
    4xx:客户端错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

    1. 用Chrome查看响应
      (1)打开开发者工具中的Network
      (2)输入网址并选中第一个响应
      (3)查看Response Headers,点击view source就会看到响应的前两部分。
      (4)查看Response或Preview看到第四部分。


      Chrome中查看响应的内容

    相关文章

      网友评论

          本文标题:HTTP的请求与响应

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