本文目录
- 什么是HTTP
- HTTP 请求
- HTTP 响应
- curl 命令
什么是HTTP
维基百科的解释
主要流程为:浏览器发起请求 > 服务器接受请求 > 服务器响应 > 浏览器下载响应内容
HTTP 请求
HTTP请求方法
HTTP/1.1协议中共定义了八种方法:GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT。HTTP请求格式
1 动词 路径 协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上传的数据
例如:
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,zh-CN;q=0.7,zh;q=0.6
- 使用Chrome开发者工具查看 HTTP 请求内容
1 在Chrome中按下F12或在页面右键,点击检查。
2 切换到Network标签页。
3 在地址栏输入完整的URL,回车。
4 此时Network标签页中会显示本次操作的所有请求。
5 点击所需要查看的请求,展开Request Headers,点击view source。
6 显示的内容即为所需查看的 HTTP 请求内容
HTTP 响应
- 响应的格式
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
例如:
HTTP/1.1 200 OK
Bdpagetype: 2
Bdqid: 0xb405678a0002641c
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Tue, 02 Oct 2018 04:29:18 GMT
Expires: Tue, 02 Oct 2018 04:29:18 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=190; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1447_21099_26350_20719; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
- 状态码
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误
- 使用Chrome开发者工具查看 HTTP 响应内容
1 在Chrome中按下F12或在页面右键,点击检查。
2 切换到Network标签页。
3 在地址栏输入完整的URL,回车。
4 此时Network标签页中会显示本次操作的所有响应。
5 点击所需要查看的响应,展开Response Headers,点击view source。
6 显示的内容即为所需查看的 HTTP 响应内容
curl 命令
使用curl 命令可以在命令行中发起一个http请求。
例如
-
curl -s -v -- "https://www.baidu.com"
发起一段请求
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
-
curl -X POST -s -v -- "https://www.baidu.com"
请求的协议为post
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
-
curl -X POST -d "1234567890" -s -v -- "https://www.baidu.com"
发起的请求包含了一段上传的数据
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890