HTTP请求和响应

1.HTTP工作原理

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为其他端口。
HTTP三点注意事项:
HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2.HTTP请求的格式

HTTP一般有四部分组成,请求行、请求头部、空行、请求数据(其中请求数据部分可以为空),请求格式如下:

第一部分  动词 路径 协议/版本
第二部分   Key1: value1
第二部分   Key2: value2
第二部分   Key3: value3
第二部分   Content-Type: text/html
第二部分   Host: www.baidu.com
第二部分   User-Agent: curl/7.54.0
第三部分 
第四部分   要上传的数据

其中,第一部分为请求行。请求行中,动词可选的有GET、 POST、 PUT PATCH 、DELETE、 HEAD 、OPTIONS 等。路径如果你没有写,默认路径为 /。协议/版本,比如HTTP/1.1。
第二部分,请求头部,由一系列key:value值组成。如上所示的Context-Type:text/html,表示内容为text文件或者HTML文件。
第三部分,是一个回车(空行),将第二部分和第四部分分割。
第四部分,就是要上传的数据。

3.HTTP响应的格式

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

第一部风   协议/版本号 状态码 状态解释
第二部分   Key1: value1
第二部分   Key2: value2
第二部分   Content-Length: 17931
第二部分   Content-Type: text/html
第三部分
第四部分   要下载的内容

其中,第一部分为状态,表示协议/版本号(如HTTP/1.1),状态码及状态信息构成。
第二部分,状态消息,由一系列key:value值组成。如上所示的Context-Type:text/html,表示内容为text文件或者html文件。
第三部分,是一个回车(空行),将第二部分和第四部分分割。
第四部分,就是要下载的数据。

4.HTTP状态码

  • 1xx 信息,服务器收到请求,需要请求者继续执行操作。
  • 2xx 成功,操作被成功接收并处理。
  • 3xx 重定向,需要进一步的操作以完成请求。
  • 4xx客户端错误,请求包含语法错误或无法完成请求。
  • 5xx 服务器错误,服务器在处理请求的过程中发生了错误。
    具体状态码含义可上网查询。

5.用chrom查看请求和响应

  • 打开chrome,F12进入开发者工具,如下图1所示:
    HTTP请求和响应_第1张图片
    图1
  • 点击network选项,在搜索框输入https://www.baidu.com,并点击name下的第一行如下图2所示:
HTTP请求和响应_第2张图片
图2
  • 点击header下的Request Header选项,并点击View source选项即可看到该请求内容,如下图3所示:
    HTTP请求和响应_第3张图片
    图3

    由图3可知该请求只有第一、第二、第三部分,没有第四部分。如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到。
  • 点击图2Response Header选项,并点击View Source选项,即可看到相应内容,如下图4所示:
    HTTP请求和响应_第4张图片
    图4

    响应内容可通过点击Response选项查看,如下图5所示:
    HTTP请求和响应_第5张图片
    图5

6.curl命令

  • curl www.baidu.com该命令将网页内容显示在命令行。如下图所示:

    HTTP请求和响应_第6张图片

  • curl www.baidu.com >index.html 该命令执行的结果是将该网页下载下来并保存至index.html文件里。

  • curl -o index.html www.baidu.com 该命令的作用和上一条命令一样,也是将网页下载并保存至index.html文件里。

  • curl -I www.baidu.com 该命令是将baidu.com的响应头部显示在命令行中,如下图所示:

    HTTP请求和响应_第7张图片

    如果将参数-I变成-i则显示响应头部和整个页面。

  • curl -L www.sina.com ,该命令执行的结果是将网站自动跳转至www.sina.com.cn,-L参数的作用就是自动跳转。

  • curl -v www.baidu.com-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息,如下图所示:

    HTTP请求和响应_第8张图片

  • curl -c cookies.txt http://www.baidu.com/ ,该命令可以把访问网站的cookies保存在cookies.txt文件中。

  • curl -b cookies.txt http://www.baidu.com/ ,该命令则可以利用已有的cookie信息文件来访问网站。
    更多命令用法请参考https://man.linuxde.net/curl 或curl.haxx.se/docs/manpage.html

你可能感兴趣的:(HTTP请求和响应)