JavaWeb基础(二) --浅谈HTTP协议
一、概述
1.HTTP是超文本传输协议(Hyper Text Transfer Protocol),基于客户端/服务器模式,通常运行在TCP协议之上,指定了客户端可能给服务器发送的请求消息格式与从服务器端接收到的响应消息格式
2.特点:
- 基于TCP/IP高级协议
- 默认端口号:80
- 基于请求/响应模型:请求与响应一一对应
- 无状态:每次请求之间互相独立,不能交互数据
3.历史版本:
- 1.0每次请求响应都会建立新的连接
- 1.1连接可复用
4.工作流程:
1)客户端与服务器建立连接
2)客户端向服务器发送请求
3)服务器向客户端返回响应
4)客户端与服务器关闭连接
二、请求消息数据格式
示例(请求行+请求头):
GET /account/1 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
Sec-Fetch-Dest: empty
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Idea-43a43cdb=b61fe043-32cd-4285-a7ca-ee6d7dc5b478; JSESSIONID=3B5EDF7D0AFFFCE19CD524B2BF10E087
1.请求行
请求方式 请求url 请求协议/版本
请求方式:HTTP协议有7种请求方式,常用的由两种
- GET:
- 请求参数在请求行中,在url后
- 请求的url长度有限制
- 不安全
- POST:
- 请求参数在请求体中
- 请求的url长度无限制
- 安全
2.请求头
请求头名称:请求头值 (即key:value模式)
常见请求头:
User-Agent:浏览器的版本信息
Accept:浏览器支持解析的数据格式
Accept-Language:浏览器支持的语言
Accpet-Encoding:浏览器支持的压缩格式
Referer:本次发起本次请求的源地址
Referer作用:
- 防盗链
- 统计工作
3.请求空行
一个空行,用于分隔请求头域请求体,十分重要!
4.请求体(正文)
变量名 = 变量值(key = value形式)
三、响应消息数据格式
示例(响应行+响应头)
HTTP/1.1 200 OK
Bdpagetype: 1
Bdqid: 0x8c1fd4b80004c846
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sat, 11 Apr 2020 01:52:17 GMT
Expires: Sat, 11 Apr 2020 01:51:57 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1463_31170_21093_31187_31271_31229_30823_26350_31163_22157; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1586569937060619521010097022776327325766
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
1.响应行
协议/版本 响应状态码 状态码描述
响应状态码:
- 1xx:服务器接受客户端消息,但没有接受完成,等待一段时间后,发送1xx状态码
- 2xx:成功。
- 200(成功)
- 3xx:重定向。
- 302(重定向)
- 304(访问缓存,即原来的缓存文件未经修改,可以直接访问)
- 4xx:客户端错误
- 404(找不到被请求的路径)
- 405(请求方法不被允许)
- 5xx:服务器端错误
- 500(服务器内部出现异常)
2.响应头
头名称:值(key:value形式)
常见响应头:
- Content-Type:本次响应数据格式及编码格式
- Content-diposition:打开响应体数据的方式
- in-line(在当前页面展示),默认值
- attachment;filename= xxx(以附件形式打开响应体),文件下载
3.响应空行
空行,分隔响应头与响应体,十分重要!
4.响应体
客户端返回的数据