http请求报文
- 请求行:请求方法 请求的url http协议及版本。
- 请求头:一大堆的键值对。
- 空行指的是:当服务器在解析请求头的时候,如果遇到了空行,则表明,后面的内容是请求体。
- 请求体:数据部分(可以为空)。
http响应报文
状态行:http协议及版本 状态码 状态描述。
响应头:一大堆的键值对。
空行:当服务器在解析响应头的时候,如果遇到了空行,则表明,后面的内容是响应体。
响应体:数据部分(可以为空)。
PS:Content-Type标注了请求体/响应体的数据格式
http方法
GET
:获取资源
POST
:传输资源
put
:更新资源
PATCH
:更新部分资源
DELETE
:删除资源
HEAD
:获得报文首部
GET与POST的几点区别
- 浏览器在回退时,get不会重新请求,但post会重新请求。
- get请求会被浏览器主动缓存,而post不会。
- get请求的参数,会保留在浏览器的历史记录里,而post不会。
- get请求在url中传递的参数有大小限制,基本是2kb,不同的浏览器略有不同。
- get参数是直接暴露在url上的,而post是放在请求体中的。
http状态码
1xx:提示信息-请求已接收,继续处理
2xx:成功-请求已被成功接收
3xx:重定向
4xx:客户端错误-请求有语法错误或无法实现
5xx:服务器错误
用Chrome开发者工具查看 HTTP 请求内容
以百度为例看get请求
-
打开 Network
-
地址栏输入www.baidu.com
- 查看 www.baidu.com的request部分
-
点击view source
登录百度,看post请求
- 勾上Preserve log,点击登录
- FormData 里可以看到请求体里的密码
用Chrome开发者工具查看 HTTP 响应内容
依然以百度为例,查看response部分,点击view source
curl命令的使用
1.命令功能
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载
2.命令格式
curl [选项] [URL]
3.常见使用方法
curl url
查看网页源码
curl -X
指定请求方式
curl -X post
curl -c
保存 Cookie
curl -c "保存cookie的文件名" http://www.example.com
curl -b
读取cookie
curl -b "cookie字符串或文件名" http://www.example.com
curl -d
使用-d发送带参数的请求,如果省略 -X,则默认为 POST 方式
curl -d "userName=abc" http://www.example.com/login
curl -H
自定义Header头信息
curl -H "Content-Type:text/html" http://www.example.com
curl -v
显示请求的信息 ,包括端口连接和 http 头。
curl -i
显示http头,连同网页代码。
curl -I
只显示http头。
提交表单信息
浏览器每次向服务器发送url时都会进行编码,然后服务器再进行解码。
所以用curl提交表单时,所传参数都必须进行编码
1.header不需要加urlencode,浏览器会自动编码
2.post和get所传参数没有编码的话需要加urlencode
$ curl -X POST --data-urlencode "data=哈哈abc" example.com/form
网友评论