HTTP是什么
- 超文本标记语言
- HTML JS CSS 图片 文字 音频 视频 等文件,都是通过HTTP在服务器和浏览器直接传输
过程
- dns域名解析服务器
- 浏览器IP
- IP -- 服务器
后端通信的过程
前后端的通信是在 请求-响应 中完成
- 概念理解
- 前端:浏览器
- 命令行工具
- 后端:服务器
前后端的通信方式
使用浏览器访问网页
在浏览器地址栏输入网址,按下会车
HTML的标签
浏览器在解析HTML标签的时候,遇到一些特殊的标签。会再次向服务器发送请求
link、img、script、iframe
还有一些标签,浏览器解析的时候,不会向服务器发送请求但是用户可以使用他们向服务器发送请求a form
HTTP报文是什么
- 请求报文
- 响应报文
- get请求,没有请求体
HTTP方法
浏览器发送请求时采用的方法,和响应无关
HTTP方法的语义
- GET获取数据
- 获取资源(文件)
- POST创建数据
- 注册
- PUT更新数据
- 修改个人信息,修改密码
- DELETE 删除数据
- RESTful接口设计
post和get
语义
- get获取数据
- post创建数据
发送数据
- get通过地址在请求头中携带数据、
- 能携带的数据量和地址的长度有关、一般最多几k
- post既可以通过地址在请求头中携带数据,也可以通过请求体携带数据
- 能携带的数据量理论上是无线的 携带数量数据,可以使用get请求,大量的数据可以使用post请求
缓存
- get可以被缓存,post不会被缓存
- 安全性,都不安全
状态码
- 100-199 代表请求已被接受,需要继续处理
- 200-299 成功
- 300-399重定向
- 301 moved permanenty
- 304 Not Modifed 没有过期,没有被修改
- 404NOt Found无法找到请求资源,请求错误
- 500-599服务器错误
Cookie
什么是Cookie
- Cookie是浏览器缓存数据的一种法师
- 因为缓存在用户本地,而不是缓存在服务器上,是本地缓存
- 一般会自动随着浏览器每次请求发送到服务器
Cookie有什么用
利用Cookie跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个页面的停留时间等
Cookie属性
- Cookie的名称(Name)和值(Value)
- 最重要的两个属性,创建Cookie时必须填写,其他属性可以使用默认值
- Cookie的名称或值如果包括非英文字母,则写入时需要使用encodeURIComponent()编码,读取时使用decodeURIComponent()解码
document.cookie = 'username=alex'
document.cookie = "username= 张三"
document.cookie = `username= ${encodeURIComponent('张三')}`
document.cookie = `${encodeURIComponent('用户名')} = ${encodeURIComponent('张三')}`
//一般名称使用英文字母,不要中文,值可以用中文
- 失效时间
- 对于失效的Cookie,会被浏览器清除,如歌没有设置失效到期时间,这样的Cookie称之为回话Cookie,他存在内存中。当会话结束,也就是浏览器关闭,Cookie消失
document.cookie = "username = alex"
// 想长时间存在,设置Expires或Max-Age
document.cookie = `username = alex;expires=${new Date('2024-1-01 00:00:00')}`
//max-age表示当前时间 + 多少秒后过期。单位是秒
document.cookie = "username=alex;max-age=5"
document.cookie = `username=alex;max-age=${24 * 3600 * 30}`
- 如果max-age的值是0或是负数,则Cookie会被删除
document.cookie = `username=ale1x`
document.cookie = `username=ale1x;max-age=0`
document.cookie = `username=ale1x;max-age=-0`
- domain限定了访问Cookie的范围
- 使用JS只能读写当前域或父域的Cookie,无法读写其他域的Cookie
document.cookie = "username = xiaoming; domain=www.imooc.com"
- Path路径
- path限定了访问Cookie的范围(同一个域名下)
- 使用js只能读写当前路径和上级路径的Cookie,无法读取下级路径的Cookie
document.cookie = 'username=alex; path=/demo1/Cookie的属性2.html'
- HttpOnly
- 设置HTTPOnly属性的Cookie不通过js去访问
- Secure安全标志
- Secure 限定了只有在使用了https的情况下才可以发送给服务端
- Domain、path、Secure都满足条件,还不能过期的Cookie才能随着请求发送到服务器端