HTTP 协议
1、协议 ---- 协商议定
HTTP 协议:
浏览器发数据给服务器
服务器返回数据给浏览器
作用:规范双方的数据交互的
2、HTTP协议 --- 超文本传输协议
两点:
请求协议
响应协议
特点:
基于请求响应的
HTTP 协议的默认端口是 80
HTTP 协议版本:
1.0 ---- 访问一次资源创建一个连接
1.1 ---- 只有一个连接(效率更高)
3、HTTP 协议组成
请求行:
请求行必须在必须在HTTP请求格式的第一行
请求行格式:协议规定7中, 常用两种GET和POST
GET请求:
将请求参数追加在URL后面,不安全
URL长度限制GET请求方式的大小
没有请求体
POST请求
请求参数显示请求提出,较安全
请求数据大小没有限制
只有表单设置为method="post" 请求,其他的都是get请求,
常见的get请求,地址栏直接访问, <a href="">, <img src="">等
请求头:
例如 Host:localhost:8080
请求头从第二行开始,到第一个空行结束, 请求头和请求体之间存在一个空行
请求头通常以键值对(key:value) 方式传递数据
key为规范规定的固定值 , value为key对应的取值,通常是一个值,可能是一组
请求体:
通常情况下,只有post请求方式才会使用到请求体, 请求体中都是用户表单提交的数据, 每一项数据
都是使用键值对(k=v), 多组织使用&相连;
http响应:
http响应的格式: 响应行,响应头,响应体
响应行:
例如HTTP/1.1 200 ok
格式:协议/版本号 状态码 状态码描述
状态码: 服务器和浏览器永固确定状态的固定数字
响应头(重点):
状态码
1xx: ----- 原则上杜绝出现,请求正常,但是不给响应
2xx: ----- 200 响应正常
3xx: -----
304 和缓存有关,找本地缓存资源
referer
cookie
content-Type --- (文件上传)
响应时:
ETAG:毫秒值 ---- 文件最后时间
Date:时间 ----- 响应时间
浏览器存储响应的时间戳
再次访问时,将存储的时间携带至服务器
请求头:
if-modified-since:上次传输来的 Etag 值(文件最后修改时间)
服务器解析出值,比较文件的修改时间,如果一样,返回 304
否则,将文件内容输出
4xx: ----
404 ---- 路径不存在
5xx: ----
500 ---- 服务器内部错误
refresh(非常重要):
referer :定时刷新,格式: 秒数;url=路径. url可省略, 默认值为当前页
缓存结合时间戳实现:
刷新
比如,早上看了天气预报是晴天 ,然后后, 去洗漱一下, 吃个饭后, 如果页面没有手动刷新是不会变的, 但是这个时候可能
外面已经下雨了, 通过referer可以实现浏览器实时刷新;
1、实现浏览器的自动刷新
2、服务器告知浏览器进行刷新操作
refresh=3;
4、referer
A、直接访问页面A,不会出现 referer
B、从B页面跳转到A页面,出现 referer = "B页面的url"
referer 传到服务器之后,服务器可以解析出从那个页面跳转到A的
作用:
A、防盗链实现 结合 referer
B、网站统计 结合 referer