HTTP的笔记总结

216 阅读3分钟

HTTP和HTTPS的区别

HTTP是URL 以http://开头. 而HTTPS是以https:// 开头

HTTP 是明文传输,不安全 , 而HTTPS通过SSL/TLS进行了加密, 很安全

HTTP的端口号是80端口 HTTPS是443端口

HTTPS的证书一般需要购买, (但也有免费的) HTTP 不需要证书

GET和POST的区别有哪些?

区别1:. 幂等性(操作重复很多遍,但是不会改变结果那么这个就是幂等)

  • 由于GET是读, POST是写, 所以GET是幂等的,POST不是幂等的
  • 浏览器打开网页会发送GET请求,POST 打开的页面刷新需要确认。
  • GET结果会被缓存. POST结果不会
  • GET打开的页面可以被书签收藏, POST不行

区别2: 请求参数

  • 通常GET请求会把请求参数放在URL路径里 ( 如www.xxx.com?id=1&a=2 ) POST请求会将请求数据放在body(消息体)里
  • GET请求没有POST安全. 因为参数直接暴露在URL上. 所以不能用来传递敏感信息
  • GET请求参数在URL里有长度限制, post放在body里没有长度限制。

区别3:TCP packet

  1. GET 产生一个 TCP 数据包;POST 产生两个或以上 TCP 数据包。

HTTP缓存有哪些方案

根据是否向服务器发起请求, 主要分为强缓存和内容协商(弱缓存)两个概念.

HTTP 1.1最著名的一个头叫做 Cache-Control:,只需要在一个文件的响应头里写上max-age(当前缓存最大有效时间) 比如: max-age = 3600 ,那么它就会自动的缓存一个小时, 也就是说一个小时之内有人再次访问同样的URL ,同样的路径,同样的查询参数, 全部都是同样的, 那么就不会再请求数据了.

还有一个就是Etag, 它是这个文件的特征值,如果当缓存时间到了, 就需要去协商内容需不需要删除, 由客户端带着这个文件问服务器决策是返回状态码 200还是304 如果是304那么就不会删除, 如果是200 那么就会删除,返回最新的内容.

HTTP 1.0 它会写一个固定的缓存时间,比如明天中午的北京时间12:00 过期,(但是这里会有问题,如果用户电脑的时间不是正确的时间,可能比这个时间晚 那么文件可能已经失效了) , 同时还会通过Last-Modified: 来告诉你上一次修改时间,如果过期了 ,那么就会去协商 拿着上一次修改的时间的文件 过期的缓存需不需要删除, 不用删返回304 删除返回新内容返回200

HTTP1.1 和 HTTP2.0的区别

  • HTTP2使用了二进制传输,而且将head和body分成帧来传输, HTTP1.1是字符串传输
  • HTTP2支持多路复用, HTPP1.1不支持 , 多路复用简单来说就是浏览器和服务器中间有一百个请求它都可以用同一个TCP连接. 以前HTTP1.1如果有一百个连接那么得开100个TCP
  • HTTP2可以压缩head, 加快了请求的速度
  • HTTP2 可以支持服务器推送

HTTP的状态码有哪些

  1. 1XX:信息状态码。
  2. 2XX:成功状态码。
  3. 3XX:重定向状态码。
  4. 4XX:客户端错误状态码。
  5. 5XX:服务端错误状态码。

其中常见的状态码:

200:请求成功,一般用于GET与POST请求;

301:永久重定向; 302:临时重定向;

400: 客户端请求的语法错误,服务器无法理解; 404:无法找到此页面 ;405:请求的方法类型不支持;

500:服务器不支持请求的HTTP协议的版本,无法完成处理