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 |