HTTP是什么

55 阅读3分钟

HTTP是什么

  1. 超文本标记语言
  2. HTML JS CSS 图片 文字 音频 视频 等文件,都是通过HTTP在服务器和浏览器直接传输

过程

  1. dns域名解析服务器
  2. 浏览器IP
  3. IP -- 服务器

后端通信的过程

前后端的通信是在 请求-响应 中完成

  1. 概念理解
  2. 前端:浏览器
  3. 命令行工具
  4. 后端:服务器

前后端的通信方式

使用浏览器访问网页

在浏览器地址栏输入网址,按下会车

HTML的标签

 浏览器在解析HTML标签的时候,遇到一些特殊的标签。会再次向服务器发送请求
 link、img、script、iframe
 还有一些标签,浏览器解析的时候,不会向服务器发送请求但是用户可以使用他们向服务器发送请求a form

HTTP报文是什么

  1. 请求报文
  2. 响应报文
  3. get请求,没有请求体

HTTP方法

浏览器发送请求时采用的方法,和响应无关

HTTP方法的语义

  • GET获取数据
  • 获取资源(文件)
  • POST创建数据
  • 注册
  • PUT更新数据
  • 修改个人信息,修改密码
  • DELETE 删除数据
  • RESTful接口设计

post和get

语义

  1. get获取数据
  2. post创建数据

发送数据

  1. get通过地址在请求头中携带数据、
  2. 能携带的数据量和地址的长度有关、一般最多几k
  3. post既可以通过地址在请求头中携带数据,也可以通过请求体携带数据
  4. 能携带的数据量理论上是无线的 携带数量数据,可以使用get请求,大量的数据可以使用post请求

缓存

  1. get可以被缓存,post不会被缓存
  2. 安全性,都不安全

状态码

  • 100-199 代表请求已被接受,需要继续处理
  • 200-299 成功
  • 300-399重定向
  • 301 moved permanenty
  • 304 Not Modifed 没有过期,没有被修改
  • 404NOt Found无法找到请求资源,请求错误
  • 500-599服务器错误

Cookie

什么是Cookie

  • Cookie是浏览器缓存数据的一种法师
  • 因为缓存在用户本地,而不是缓存在服务器上,是本地缓存
  • 一般会自动随着浏览器每次请求发送到服务器

Cookie有什么用

利用Cookie跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个页面的停留时间等

Cookie属性

  1. Cookie的名称(Name)和值(Value)
  • 最重要的两个属性,创建Cookie时必须填写,其他属性可以使用默认值
  • Cookie的名称或值如果包括非英文字母,则写入时需要使用encodeURIComponent()编码,读取时使用decodeURIComponent()解码
document.cookie = 'username=alex'
document.cookie = "username= 张三"
 document.cookie = `username= ${encodeURIComponent('张三')}`
document.cookie = `${encodeURIComponent('用户名')} = ${encodeURIComponent('张三')}`
//一般名称使用英文字母,不要中文,值可以用中文
  1. 失效时间
  • 对于失效的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`
  1. domain限定了访问Cookie的范围
  • 使用JS只能读写当前域或父域的Cookie,无法读写其他域的Cookie
document.cookie = "username = xiaoming; domain=www.imooc.com" 

  1. Path路径
  • path限定了访问Cookie的范围(同一个域名下)
  • 使用js只能读写当前路径和上级路径的Cookie,无法读取下级路径的Cookie
document.cookie = 'username=alex; path=/demo1/Cookie的属性2.html'
  1. HttpOnly
  • 设置HTTPOnly属性的Cookie不通过js去访问
  1. Secure安全标志
  • Secure 限定了只有在使用了https的情况下才可以发送给服务端
  • Domain、path、Secure都满足条件,还不能过期的Cookie才能随着请求发送到服务器端