Http全称为HyperText Transfer Protocol,超文本传输协议,它的作用就是指导浏览器和服务器进行沟通,正常的沟通过程是:
浏览器发起请求-->服务器在80端口接收请求-->服务器返回一个内容响应-->浏览器下载响应的内容
发起请求的方式有两种,一种是直接在浏览器输入对应网址或进行某种操作,另一种是用命令行curl指令发起请求。
1、使用浏览器输入网址发起请求,即url,一个url一般包含以下几个部分:
协议 域名 端口 路径 查询参数 锚点
https为协议名称,www.baidu.com为访问的域名,/s是路径,该路径不代表真的有对应的文件存在,?wd=hello&rsv_spt=1为查询参数,#5为锚点。
在浏览器查看请求和响应内容:
打开chrome浏览器,右上角设置里选择更多工具-->开发者工具,会看到多了这样一个窗口,点击network

刷新一个网页时会发现多出很多这样的请求

点击第一个进入会出现以下页面:

点击view source即可以看到对应的内容,其中Response Headers为响应内容,Request Headers为请求内容。
2、使用curl指令:
curl用法:curl (选项)(参数)
选项有一些常见的缩写如下:
-a/--append 上传文件时,附加到目标文件
-A/--user-agent <string> 设置用户代理发送给服务器
-d/--data <data> Http POST方式传送数据
-D/--dump-header <file> 把header信息写入到该文件中
-e/--referer 来源网址
-f/--fail 连接失败时不显示http错误
-F/--form <name=content> 模拟http表单提交数据
-G/--get 以get的方式来发送数据
-H/--header <line> 自定义头信息传递给服务器
-i/--include 输出时包括protocol头信息
-I/--head 只显示请求头信息
-j/--junk-session-cookies 读取文件忽略session cookie
-k/--insecure 允许不使用证书到SSL站点
-K/--config 指定的配置文件读取
-l/--list-only 列出ftp目录下的文件名称
-m/--max-time <seconds> 设置最大传输时间
-o/--output 把输出写到该文件中
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
-p/--proxytunnel 使用HTTP代理
-s/--silent 静默模式。不输出任何东西
-u/--user <user[:password]> 设置服务器的用户和密码
-v/--version 显示版本信息
-X/--request <command> 指定什么命令
命令请求实例:
curl -s -v -H "hello" --"https://www.baidu.com"
意思向百度发起一个请求,同时发送内容为hello的头信息。
可以看到给我们返回了很多东西,其中下面这段是发送的请求内容和收到的响应内容:

请求的内容最多包含4部分,最少包含3部分,第四部分可以为空:
第一部分:动词 路径 协议/版本
动词(请求的方式GET/POST/PUT/PATCH/DELETE)
Get:请求指定的页面信息,并返回数据
Post:向指定资源提交数据进行处理请求
Put:从客户端向服务器传送的数据全面替换指定的文档内容
Patch:从客户端向服务器传送的数据部分替换指定的文档内容
Delete:请求服务器删除指定的内容
路径:发起请求的链接中的路径,可以为空,但默认都是以/开头,路径中包括查询参数,但是不包括锚点
协议:使用的协议比如https,ftp等等
版本号:协议版本号
第二部分格式:key:value

第三部分:永远都是一个回车(/n)
第四部分:一般为要上传的数据,并且在第二部分中如果有content-type,那么content-type的值标注了第四部分内容的格式。
不写请求方式时默认为Get方式,也可以换为Post请求,发送数据到对应链接:
curl -X POST -d "1234" -s -v -H "hello" --"https://www.baidu.com"
得到的请求内容为:

获得的响应内容:

响应的格式也是由四部分组成:
第一部分:协议/版本号 状态码 状态解释
状态码:
200 :请求成功 202:服务器成功接收请求 301:被请求的资源已经永久移动到新位置
302:被请求的资源暂时不可以访问,以后可以再访问
404:请求失败,请求所希望得到的资源没有在服务器上找到
500:服务器错误 502:作为网关或代理工作的服务器尝试执行请求时,从上游服务器得到无效的响应
第二部分格式:key:value,同样的,content-type标注了第4部分的格式
第三部分:一个回车(/n)
第四部分:要下载的内容
以上是关于对http请求与响应的简单了解。