HTTP协议
HTTP协议概述
1.什么是HTTP
HTTP 全称: Hyper Text Transfer Protocol
中文名: 超文本传输协议
HTTP协议简单的说,将用户请求的页面从服务器传输到客户端浏览器,浏览器进行解析,解析以后变成一个我们人类可以理解的方便观看的页面
2.什么是超文本
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。
超文本(Hypertext)就是指具有超链接功能的文件,它可以将文件中已经定义好的关键字(Keyword),经过鼠标的点击(Click),便可以得到关键字的相关解释,这种方法使用户使用起来更感舒适
3.什么是URL
统一资源定位符
当我们访问: baidu.com
其实他访问的是: http://www.baidu.com:80/index.html
URL: http:// www.baidu.com :80 /index.html
#协议 #域名 #端口 #文件及其路径
协议: 协议还有很多,ftp、file、ssh、ws
域名: 代表我们访问的主机,域名好记
端口: 进入我们服务器的门
文件路径: 服务器上的资源,实际路径由web服务决定
html文件->包含各种各样的元素(URL连接)->形成WebPage建成web页面
URL HTML HTTP 之间的关系
一个完整的HTML页面是有多个URL地址资源组成的,而HTTP协议是来传输和解析HTML页面的
HTTP工作原理
1.首先,当你在浏览器中输入一个网址时(https://www.baidu.com/s?ie=...),浏览器会帮你分析,你输入的这个URL
2.其次,浏览器会向DNS服务器请求解析,该URL中的域名www.baidu.com,解析出百度服务器所在的地址
3.DNS服务器,会将解析出来的IP地址110.111.112.113并返回给浏览器
4.浏览器接收到DNS返回的IP地址,立即与该IP所在的服务器简历TCP链接(80端口)
5.浏览器请求文档,也就是html页面,GET /index.html,并发出HTTP请求报文
6.服务器给出响应,将请求的index.html文档返回给浏览器,也就是响应HTTP请求的报文
7.TCP链接响应完之后,释放TCP链接
8.最后能显示出,你请求的这个页面
浏览器获取数据后,页面的请求信息
1.基本信息(General)
请求网址: https://www.cnblogs.com/
请求方法: GET
状态代码: 200
远程地址: 114.55.187.58:443 # 远程主机ip和端口
引荐来源网址政策: strict-origin-when-cross-origin # 控制请求头信息
2.请求头部(Request Header)
# 请求的域名
Authority: www.cnblogs.com
# 请求的方式
Method: GET
# 请求的地址和文件
Path: /
# 请求的协议
Scheme: https
# 请求的资源类型(下方的请求类型都进行展示)
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
# 压缩
Accept-Encoding: gzip, deflate, br
# 字符类型
Accept-Language: zh-CN,zh;q=0.9
# 缓存的时间(最大保持多久)
cache-control: max-age=0
# 登录信息
Cookie: ...
# 升级
Upgrade-Insecure-Requests: 1
# 客户端信息
User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
3.响应头部(Responcse Header)
# 阿里云的存储时间
ali-swift-global-savetime: 1582084570
# 缓存控制
Cache-Control: public,max-age=30
# 压缩
Content-Encoding: gzip
# 文件类型和字符集
Content-Type: text/html; charset=utf-8
# 返回数据时间
Date: Mon, 24 Jul 2023 07:52:29 GMT
# 加密的id
eagleid: 777....
# 失效时间(缓存)
expires: Thu, 19 Nove 1981 08:52:00 GMT
# 软链接
link: <https://www.driverzend.com/wp-json/>; rel="https://api.w.org/"
# 没有缓存
progma: no-cache
# 使用web服务
server: Tengine
# 状态码
status: 200
# 限制参数,跨域使用
timing-allow-origin: *
# 渲染
vary: Accept-Encoding
# 缓存
via: cache7.12cm9..., cache41.12cm9..., kunlun10.cn2040... # 这有3层缓存(cdn服务器上的,不用知道)
---------CDN服务器参数------------ # 不需要了解
x-cache : MISS TCP...
x-pingback: https:...
x-powered-by: PHP/7.1.21
x-swift-cachetime: 0
x-swift-savetime: Wed, 19 Feb...
HTTP的请求方法
在HTTP请求报文中的方法(Method),是对所请求对象所进行的潮州,也就是一些命令。请求报文中的操作有:
| 方法(Method) | 含义 |
| GET |
请求读取一个Web页面 |
| POST |
附加一个命名资源(如Web页面) |
| DELETE |
删除Web页面 |
| CONNECT |
用于代理服务器 |
| HEAD |
请求读取一个Web页面的头部 |
| PUT |
请求存储一个Web页面 |
| TRACE |
用于测试,要求服务器送回收到的请求 |
| OPTION |
查询特定选项 |
HTTP响应方法
状态码(status-code)是响应报文状态行中包含的一个三位数字,指明特定的请求是否被满足
![]()
| 状态码 | 含义 |
| 200 |
成功 |
| 301 |
永久重定向(跳转)第一次访问,跳转新地址。之后访问直接去新地址 |
| 302 |
临时重定向(跳转)第一次访问,跳转新地址。之后访问还是先访问原地址再跳新地址 |
| 304 |
本地缓存 (读本地缓存,如果不要读,ctrl+F5强制刷新或者无痕浏览, 或设浏览器F12禁缓存Disable cache,文件size如果是memory cache也是缓存) |
| 307 |
临时跳转,有钱人这么搞,比如www.jd.com |
| 400 |
客户端错误,请求错误 |
| 401 |
认证失败 |
| 403 |
找不到主页,权限不足 |
| 404 |
找不到页面 |
| 500 |
内部错误 |
| 502 |
找不到后端主机 |
| 503 |
服务器过载 (服务器上跑的程序太多) |
| 504 |
后端主机超时 |
请求头部参数
| 头(header) | 类型 | 说明 |
| User-Agent |
请求 |
关于浏览器和它平台的信息,如Mozilla5.0 |
| Accept |
请求 |
客户能处理的页面的类型,如text/html |
| Accept-Charset |
请求 |
客户可以接受的字符集,如Unicode-1-1 |
| Accept-Encoding |
请求 |
客户能处理的页面编码方式,如gzip |
| Accept-Language |
请求 |
客户能处理的自然语言,如en(英语),zh-cn(简体中文) |
| Host |
请求 |
服务器的DNS名称。从URL中提取出来,必须 |
| Referer |
请求 |
用户从该URL代表的页面出发访问当前请求的页面。(上一次访问的地址) |
| Cookie |
请求 |
将以前设置的Cookie送回服务器,可用来作为会话信息 |
| Date |
双向 |
消息被发送时的日期和时间 |
| Server |
响应 |
关羽服务器的信息,如Microsoft-IIS/6.0 (一般隐藏,暴露不安全) |
| Content-Encoding |
响应 |
内容是如何被编码的(如gzip) |
| Content-Language |
响应 |
页面所使用的的自然语言 |
| Content-Length |
响应 |
以直接计算的页面长度 |
| Content-Type |
响应 |
页面的MIME类型 |
| Last-Modified |
响应 |
页面最后被修改的时间和日期,在页面缓存机制中意义重大 |
| Location |
响应 |
提示客户将请求发送给别处,即重定向到另一个URL |
| Set-Cookie |
响应 |
服务器希望客户保存一个Cookie |