总结一下面试常被问的HTTP协议

http和https的区别?

https的具体实现原理是什么,是怎么实现安全传输的
       HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。http是无状态的,端口为80;
      为了保证这些隐私数据能加密传输,于是网景公司设计了SSL,协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。端口号443,
       1客户端发送随机数和支持的加密方式列表
       2服务器返回随机数,选择的加密方式和证书(经过ca颁发,或者自签名的证书,该证书包含公钥)
       3客户端验证证书,使用证书中的公钥加密发送给服务端
       4服务端使用私钥解密得到报文;
  https缺点:1.HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电,效率上不如http;
          2.SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用

http的响应状态码


  100——指示提示性信息
    100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
  200——指示成功的响应
  200 OK 正常返回信息
  201 Created 请求成功并且服务器创建了新的资源
  202 Accepted 服务器已接受请求,但尚未处理
  300——指示客户端要重定向
  301 Moved Permanently 请求的网页已永久移动到新位置。
  302 Found 临时性重定向。
  303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
  304 Not Modified 自从上次请求后,请求的网页未修改过。
  400——客户端请求错误
  400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
  401 Unauthorized 请求未授权。
  403 Forbidden 禁止访问。
  404 Not Found 找不到如何与 URI 相匹配的资源。
  500——服务器端的错误
  500 Internal Server Error 最常见的服务器端错误。(编码有问题)
  503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。


http协议get和post的区别?


  get:语义上表达客户端想获取,post语义上表达客户端想传递
  get:请求数据追加在url做查询字符串,post请求数据在请求主体中
  get:请求数据类型只能是文本字符,post请求数据可以是任意类型,图片,视频
  get:请求数据有长度限制(几KB),post请求数据没有长度限制
  get:能被缓存,post:不能被缓存
  get和post在http协议中其实安全性都一样,只是get查询字符串会在地址栏显示让人感觉比较暴露


http请求方法有几种?


  八种:除了常用的get和post
  还有:HEAD  与 GET 相同,但只返回 HTTP 报头,不返回文档主体。
        PUT  上传指定的 URI 表示。
        DELETE  删除指定资源。
        OPTIONS  返回服务器支持的 HTTP 方法。
        CONNECT   把请求连接转换到透明的 TCP/IP 通道。
        TRACE 

http1.0和http1.1 http2.0区别


    http1.1默认长链接,
    http1.1节约带宽:支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则                返回401。客户端如果接受到100,才开始把请求body发送到服务器
    http2:多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。
    http2:可以对请求头header进行压缩(http1.1每次请求头部消耗流量多)
    http2:服务器推送,服务器端推送的这些资源其实存在客户端的缓存,客户端直接从本地加载这些资源就可以

猜你喜欢

转载自blog.csdn.net/weixin_37823121/article/details/81255537