概念:Hyper Text Transfer Protocol 超文本传输协议
传输协议:定义了客户端和服务器端通信时,发送数据的格式。
特点:
- 基于TCP/IP的高级协议
- 默认端口号:80
- 基于请求/响应模型的:一次请求对应一次响应
- 无状态的:每次请求之间相互独立,不能交互数据
完整的http请求图示:
公共头部(General)
参数说明
Request Method
页面请求的方式,如:POST/GET
Status Code
服务器告诉客户端浏览器本次请求和响应的一个状态。如:200 OK
Remote Address
请求的远程地址 HTTP协议在三次握手时使用的就是这个Remote Address地址,默认具有防篡改的功能
Referrer Policy
请求头中Referrer的策略
Request URL
请求的url地址
常见请求方式(Request Method)
GET(一般用于查询)
请求指定页面的信息,并返回实体主体。
- GET请求将请求参数包含在url中,例如:https://so.csdn.net/so/search?q=Java&t=blog&u=qq_35427589
- ?之前的内容是请求文件的地址
- q、t和u是请求参数,不同请求参数通过 & 隔开
&是参数之间的分隔符
- GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求,还可以把它收藏到书签中;
- 且GET请求有长度限制,仅用于请求数据(不修改);
- 只能通过url进行编码;
- 不安全,不能用来传递敏感信息。
POST(一般用于提交表单新增/更新)
用于将数据发送到服务器以创建或更新资源。
- POST请求将请求参数保存在request body中,利用request.body.参数名来获取post方式请求的参数
- POST请求永远不会被缓存,且对数据长度没有限制;
- 我们无法从浏览器历史记录中查找到POST请求;
- 支持多种编码格式;
- 更安全,适合传递敏感信息。
DELETE(一般用于删除)
用来删除指定的资源,它会删除目标资源的所有当前内容。(用于删除)
PUT(一般用于更新)
用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。(用于更新)
HEAD(类似GET)
与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。
常见的响应状态码(Status Code)
状态码都是3位数字
分类:
1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
2xx:成功。代表:200
3xx:重定向。代表:302(重定向),304(访问缓存)
4xx:客户端错误。
代表:
404(请求路径没有对应的资源)
405:请求方式没有对应的方法
5xx:服务器端错误。代表:500(服务器内部出现异常)
请求头(Request Headers)
常见的请求头参数
User-Agent
浏览器告诉服务器,当前访问使用的浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题。
Referer
表明当前这个请求是从哪个url过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。
Host
请求域名/请求的主机和端口
Accept
可接受的相应内容类型(Content-Type);如: application/json, text/plain, /
Accept-Language
可接受响应内容的语言列表;如:zh-CN,zh;q=0.9
Accept-Charset
可接受的字符集;
Accept-Encoding
可接受的响应内容的编码方式;
Connection
浏览器有限使用的连接类型,如:keep-alive
Cookie
储存在用户本地终端上的数据,一般用来辨别用户身份。
Authorization
授权信息。
响应头(Response Headers)
常见的响应头参数
Access-Control-Allow-Origin
指定哪些网站可以跨域源资源共享
Accept-Ranges
服务器所支持的内容范围
Connection
服务器通过这个头,响应完是保持链接还是关闭链接
Content-Disposition:对已知MIME类型资源的描述,浏览器可以根据这个响应头决定是对返回资源的动作,如:将其下载或是打开。
Content-Encoding
响应资源所使用的编码类型。
Content-Language
响应内容所使用的语言。
Content-Type
告诉客户端,资源文件的类型,如:application/jsonapplication/jsonapplication/json
Date
此条消息被发送时的日期和时间(以RFC 7231中定义的"HTTP日期"格式来表示)
Expires
指定一个日期/时间,超过该时间则认为此回应已经过期
Set-Cookie
设置HTTP cookie
Server
服务器的名称
其他参数
Headers同级相关
Payload
请求相关参数信息。
Preview/Response
响应相关参数信息。
Timing
请求和响应相关耗时情况统计。