HTTP 超文本传输协议
一,定义
-
传输协议: 定义了客户端和服务端通信,发送数据的格式
-
特点:
1. 基于tcp/ip高级协议
2. 默认端口是80
3. 基于请求/响应模型:一次请求一次响应
4. 无状态:每次请求之间相互独立,不能交互数据
二, 请求消息数据格式
1. 请求行
2. 请求头
3. 请求空行
4. 请求体
- 请求行
1. 格式
请求方式 请求url 请求协议/版本
示例: GET /man.php?c=login&m=index&backurl=http%253A%252F%252F HTTP/1.1
请求方式
GET:
1. 请求参数 在请求行中
2. 请求url有长度限制
POST:
1. 请求参数 在请求体中
2. 请求的url没有限制
其他请求方式...
- 请求头
一、浏览器请求头示例(Request Headers)
GET /admin.php?c=login&m=index&backurl=http%253A%252F%252F HTTP/1.1
Host: lm.wkind.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: poscms_ci_session=i6spr94jl538a3r19r7c39gqlmkuviiu
Upgrade-Insecure-Requests: 1
Referer: http://chang.wkind.cn/admin.php?c=home&m=index
二、详细参数说明
Host: 主机地址
User-Agent: 浏览器高数服务器,访问服务器使用浏览器的版本信息
Accept: 告诉服务器可以响应的数据格式(*/*响应啥都行)
Accept-Language:浏览器可支持的语言(zh-TW中国台湾)
Accept-Encoding:支持的压缩格式
Connection: 连接类型(keep-alive表示该连接可以多次复用)
Referer:告诉服务器当前请求从哪里来(用于防止盗链,记录请求方 等)
if('正确请求地址'==Referer){
return '自己人';
}else{
return '我靠,不认识呀!';
}
- 请求空行
用于分隔POST请求头和请求体
- 请求体
get请求方式没有请求体
主要用于封装post请求参数的
三、响应消息数据格式
1. 响应行
2. 响应头
3. 响应空行
4. 响应体
- 响应行
HTTP/2 200 OK
协议/版本 状态码 状态码描述
响应状态码
1. 1xx :服务器接收客户端消息,但没有接收完成,等待一段时间,发送1xx状态码
2. 2xx :成功
3. 3xx :代表重定向 302(重定向) 304(访问缓存)
4. 4xx :客户端错误
404 请求路径没有对应的资源
405 请求方式没有对应的处理方法
5. 5xx
500 服务器内部错误
- 响应头
1. 响应的数据格式
HTTP/2 200 OK
date: Mon, 16 Aug 2021 23:34:08 GMT
content-type: text/html;charset=UTF-8
cache-control: public, max-age=600, must-revalidate
content-security-policy: default-src 'self' api2.firefoxchina.cn; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://tiny.lishitu.com/open/changeXinzuo http://a.alimama.cn g.click.taobao.com platform.sina.com.cn suggestion.baidu.com www.baidu.com hm.baidu.com nssug.baidu.com tui.cnzz.net www.google-analytics.com *.googlesyndication.com static.huohu123.com https://www.duba.com/main3_json.html http://www.duba.com/main3_json.html https://tiny.51hl.me/; img-src * data:; child-src 'self' *.firefoxchina.cn *.17huohu.com; frame-src 'self' *.firefoxchina.cn *.17huohu.com www.taobao.com entry.baidu.com; frame-ancestors 'self' *.firefoxchina.cn tongji.baidu.com about:; style-src 'self' 'unsafe-inline'; font-src 'self' data: ; report-uri /_/csp-reports
content-encoding: gzip
server: nginx
age: 29
x-via: 1.1 PStjkgwtht110:0 (Cdn Cache Server V2.0), 1.1 PS-TSN-01hDc143:15 (Cdn Cache Server V2.0)
x-ws-request-id: 611af5f0_PS-TSN-01O9G50_10804-63804
X-Firefox-Spdy: h2
2. 常见的响应头
content-type 服务器告诉客户端本次响应体数据格式以及编码格式
content-disposition 服务器告诉客户端以什么样的格式打开响应的数据
值
in-line: 默认值,在当前页面内打开
attachment;filename=xxx 以附件的形式打开响应体(文件下载)
-
响应空行
-
响应体
传输的数据