HTTP请求、响应和 curl 命令

一、HTTP 请求

一个HTTP请求包含四部分:

  1. 动词 路径 协议/版本
  • 动词:即请求的方法,最常见的方法为getpost,其它还有putdelete
  • 路径:请求的页面路径和查询参数,如果没有则默认路径为/
  • 协议/版本:声明请求的协议和其版本,最常见的是 HTTP/1.1 ,即使用HTTP协议的1.1版本发送请求
  1. 一些键值对
    这些键值对补充HTTP请求的一些必要信息,格式通常为 Key: value,比如:
  • Host: www.baidu.com,表明向百度发送请求
  • User-Agent: curl/7.54.0,表明使用哪种客户端发送请求,这里是 curl 命令
  • Accept: */*,表明可以接受何种格式的内容作为响应,这里表示可以接受任何内容
  1. 一个回车
  2. 要上传的内容(可以为空)
    如果不需要,可以不上传任何内容。这一部分通常在提交表单时使用。

我们可以使用chrome的开发者工具来看看我们访问百度时会发送怎样的HTTP请求:

  1. 打开开发者工具,点击 Network 这个 tab


  2. 访问百度,就可以看到我们向百度的域名发送了一个请求,点击这个请求


  3. 点击请求的 Header ,找到 Request Headers,再点击一下旁边的 view source 就可以看到请求源码了


二、HTTP 响应

一个HTTP响应也包含四部分:

  1. 协议/版本号 状态码 状态解释
  • 状态码:表明响应的状态,状态码由3位数字组成,含义为:
    1xx 代表请求已被接受,需要继续处理
    2xx 代表请求已成功被服务器接收、理解、并接受
    3xx 代表需要客户端采取进一步的操作才能完成请求
    4xx 代表客户端看起来可能发生了错误,妨碍了服务器的处理
    5xx 代表服务器在处理请求的过程中有错误或者异常状态发生
  1. 一些键值对
  • Content-Type: text/html;charset=utf-8,表明响应内容的格式和字符集,遵循 MIME 规范
  1. 一个回车
  2. 要下载的内容
  • 响应返回的内容,如果请求的是一个大型页面,那么内容会非常长

我们同样用chrome来看看访问百度后会得到怎样的响应:

  1. 响应内容和请求内容在同一个tab里


  2. 响应的第四部分,即下载内容在另一个tab里



    可以看到内容非常多

三、curl 命令

我们也可以使用curl命令发送HTTP请求
# curl [-X METHOD] [option] -- [url]
选项:

  • -s,静默模式,不要显示进度条和错误信息
  • -v--verbose,显示详细信息
  • -H--header,为请求添加 header

在下图中,我们指定了使用POST方法请求百度主页,并且添加了自定义的 header 信息

命令行显示了请求的原文,可以看到方法为POST,也包含了添加的自定义 header:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容