1、HTTP协议的详细内容

1.1 什么是HTTP协议?

  • 超文本传输协议
  • 浏览器和服务器之间的一种通讯协议
  • 该协议时W3C负责制定的,其本质上就是数据传送格式,提前指定好了的。浏览器和服务器都必须按照这种格式接收与发送数据

    1.2 HTTP协议版本号是多少?

  • HTTP1.1

    1.3 HTTP协议包括几部分?

  • 请求协议:从Browser发送到Server的时候采用的数据传送格式

  • 响应协议:从Server发送到Browser时时候采用的数据传送格式

    1.4 请求协议

  • 请求协议包括四部分

    • 请求行
    • 消息报头
    • 空白行
    • 请求体
  • 请求行包括:请求方式、URI、协议版本号 POST /webapp10/login HTTP/1.1
  • 空白行:专门用来分离消息报头和请求体的

    1.5 响应协议

  • 响应协议包括四部分

    • 状态行
    • 响应报头
    • 空白行
    • 响应体
  • 状态行:协议版本号、状态码、状态描述信息
  • 空白行:是用来分离响应报头和响应体的
  • 响应协议中重点掌握状态码:

    • 200 响应成功正常结束
    • 404 资源未找到
    • 500 服务器内部错误
      ……

      2、GET请求和POST请求

      2.1 GTE和POST使用情况

  • 只有当使用表单form,并且讲form的标签的method属性设置为method=”post”,才是POST请求方式,其余剩下的所有请求都是基于GET请求

    2.2 GTE和POST两者区别

  1. GET请求在请求行上提交数据,格式uri?name=value&name=value,这种提交方式最终提交的数据会显示在浏览器地址栏上
  2. POST请求在请求体中提交数据,相对安全,提交格式name=value&name=value,这种提交方式最终不会显示在浏览器地址栏上
  3. POST请求在请求体中提交数据,所以POST请求提交的数据没有长度限制【POST可以提价大数据】
  4. GET请求在请求行上提交数据,所以GET请求提交的数据长度有限制
  5. GET请求只能提交字符串数据,POST请求可以提交任何类型的数据,包括视频,所以文件上传必须使用POST请求
  6. GET请求最终的结果,会被浏览器缓存收纳,而POST不会被缓存收纳(为什么GET会被缓存?)

    2.3 GTE和POST如何选择?

  • 有敏感数据 POST
  • 传送的数据不是普通字符串 POST
  • 传送的数据非常多 POST
  • 这个请求是为了修改服务器端资源 POST
  • GET请求多数情况下是从服务器中读取资源,这个读取的资源在短时间内不会发送变化,所以GET请求最终的结果会被浏览器缓存起来
  • POST请求是为了修改服务器端的资源,而每一次修改结果都是不同的,最终结果没有必要被浏览器缓存

    2.4 缓存解决方案

  • 浏览器将资源缓存后,缓存的资源是和某个特定的路径绑定在一起的,只要浏览器再发送这个相同的请求路径,这个时候浏览器就会去缓存中获取资源,不再访问服务器,以这种方式降低服务器的压力,提高用户体验。但是有的时候我们并不希望走缓存,希望每一次都访问服务器,可以在请求路径后面添加时间戳,例如:http://ip:port/oa/system/logout?timetamp=1234564635423