HTTP介绍
HTTP请求与响应的介绍
- 一次客户端向服务端发起请求,经历了什么
URL统一资源定位符,通过一个URL,可以确定一个唯一的地址(网址)
例如:
https://www.baidu.com/s?wd=he...
https:协议
www.baidu.com :域名 .com顶级(一级)域名 baidu是二级域名 www是三级域名
/s:是路径
?wd=hello&rsv_spt=1:查询参数,中间用&连接
#5:锚点但是http协议是基于TCP和IP协议的,也就是说,通过url并不能直接找到服务器,因此需要你的电信服务商,提供一个DNS服务器,它的作用就是,你输入域名,输出一个ip,解析这个域名到对应的ip,因此,你访问一个域名时,DNS服务器会解析出相应的ip,你根据这个ip找到对应的服务器,服务器接收到请求,根据你的请求内容,返回对应的响应,客户端拿到响应,下载响应,并根据用软件展示出相应的内容。
可以在命令行用curl指令,模拟一次请求和响应
curl -s -v -H "yangdepp: xxx" -- "https://www.baidu.com" -s :slient不要显示进度条 -v :verbose要显示请求和响应,没有-v则只显示响应 -H "yangdepp:xxx"添加一个响应头 -- "将要请求的网址"
还可以加一个POST参数
加一个参数POST
请求示例 curl -X POST -s -v -H "yangdepp:xxx" -- "https://www.baidu.com"
添加一个-d 上传数据, POST带数据的请求
curl -X POST -d "123456789" -s -v -H "yangdepp:xxx" -- "https://www.baidu.com"HTTP请求
首先可以在命令行进行一次http请求,在命令行输入命令:curl -s -v -H "yangdepp: xxx" -- "https://www.baidu.com" -s :slient不要显示进度条 -v :verbose要显示请求和响应,没有-v则只显示响应 -H "yangdepp:xxx"添加一个响应头 -- "将要请求的网址" 可以看到http请求包含以下部分,如下图:
其中:
GET / HTTP/1.1 //获取根目录的内容, 协议是http版本号是1.1,用GET请求
Host: www.baidu.com //访问的是ip,但是要告诉他我访问的域名
User-Agent: curl/7.54.0 //我用的是什么软件 curl
Accept: / //我接受你返回给我的任何内容
yangdepp: xxx //可加可不加
换行
也可以用Chrome开发者工具查看 HTTP 请求内容 在地址栏输入http://www.baidu.com,右键打开调试工具,点击network,右下方的headers中有一个Request Headers,点击view parsed 如下图:
可以看到与命令行的请求基本一致。
HTTP响应
在1的命令行进行HTTP请求后,后面还有一段返回的响应信息。如下图基本信息如下
// 响应(GET)
< 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 //返回的内容的类型是html
< Date: Fri, 28 Sep 2018 14:25:53 GMT //返回的时间
< Etag: "5886041d-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18 //百度的前端服务器
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/<!DOCTYPE html> //返回额html内容
也可以用Chrome开发者工具查看 HTTP 响应内容 依然是在地址栏输入百度的地址,打开chrome的调试工具,点击右下方的headers中有一个Response Headers,点击view parsed 如下图:
可以看到和命令行得到的响应基本一致。