HTTP--相关面试题知识点

80 阅读5分钟

HTTP请求有哪些

GET,POST,PUT,DELETE,OPTIONS

GET,POST请求区别

  1. 场景
  • GET 用于获取资源,不对服务器资源做更改 --幂等
  • POST 会对服务器资源进行更改,影响数据
  1. 状态
  • 浏览器不会对post请求进行缓存
  1. 安全
  • get参数放在url,请求参数会以请求路径明文方式进行发送
  1. 参数
  • post支持更多种类型的请求参数数据

POST,PUT区别

PUT请求,修改数据内容,但不会增加种类 POST请求,可以修改内容,也可以增加类型种类

OPTIONS

由浏览器自动发出,“预检请求”,获取当前服务器的状态,性能,特征;检查访问权限

发送OPTIONS请求条件

  1. 使用了Get,Post以外的方法
  2. 设置了CORS安全的首部字段集合以外的字段,安全集合为Accept
    Accept-Language
    Content-Language
    Content-Type (需要注意额外的限制)
    DPR
    Downlink
    Save-Data
    Viewport-Width
  3. Content- type值不属于下列之一
  • application/x-www-form-urlencoded 一般用于表单提交,键值对形式
  • multipart/form-data 需要上传文件的表单用该类型
  • text/plain 纯文本

http协议头部算法,如何降低开销?

请求头存在大量重复数据,accept,cookie等

  • HPACK- http2
  1. 客户端,服务端共同维护建立字典,索引来表示常见头部字段名/值,
  2. 通过编码算法进一步压缩上面生成的字符串

请求头,响应头有哪些,常见的content-type

请求头

  • Host:当前访问的主域名,如:www.baidu.com
  • User-Agent:用户代理,简称UA,当前服务器操作系统版本 浏览器版本。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫。
  • Accept:接收文件的类型
  • referer: 从哪里来(标识这个请求是从哪个页面发过来的);Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带 上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。例如,在www.baidu.com 里有一个www.xiaoming.com 链接,那么点击这个www.xiaoming.com ,它的header 信息里就有: Referer=www.baidu.com
  • cookie:小型文本文件,标识每个人的身份,独一无二,获取cookie可以登录

响应头

Date server cache-control content-type

content-type:application/json 序列化后的json字符串(对象格式)

状态码

  • 1XX 信息类 接受请求并正在处理
2XX成功 请求正常且处理完毕
200OK
204成功处理了请求,但没有返回任何内容
206处理了部分get请求
3XX 重定向需要进行附加操作完成当前请求
301 永久重定向域名/资源地址换了
302 临时重定向平安夜活动
303查看其他位置
304 浏览器缓存相关资源未修改,用缓存
4XX 客户端错误
400请求报文出现语法错误
401认证失败,未授权(需要登录的网页)
403拒绝请求
404找不到请求的资源
405禁用请求中指定的方法
5XX服务端处理请求错误
500 服务器内部错误执行请求发生错误
501 尚未实施暂不支持当前操作
502 错误网关拒绝请求
503 服务不可用超负荷或停机维护

302,303,307三种重定向

  • 302是http1.0中的重定向
  • http/1.1 细化出了303,307;303将当前的post请求变为get进行重定向;307会严格按照浏览器诉求,不会从post变成get

HTTP 不同版本 1.0,1.1,1.2

  • http1.0和1.1之间的区别
  1. 连接上:持久性连接--复用同一个TCP

  2. 缓存上:

    1.0--强缓存/expires;协商缓存/last-modified

    1.1--强缓存/cache-control:max-age=时间;协商缓存/Etag

  3. 资源处理

    请求头引入range,允许只请求资源的某个部分,返回码是206

  • http1.1和2.0区别
  1. 二进制协议

    http1.1中,头部信息是文本,数据部分是文本/二进制

    2.0 头部和数据都是二进制,‘帧’

  2. 多路复用

    同一个tcp连接,客户端和服务器可以同时发送多个请求和响应

  3. 数据流

  4. 头部信息压缩

connection: keep-alive

  • 建立过程:
  1. 客户端发送报文夹带 keep-alive头配置
  2. 服务端接收并处理,返回keep-alive的返回头
  3. 客户端维持当前长链接建立
  • 服务端主动断开
  1. 等客户端请求
  2. 服务端返回请求并且不带keep-alive
  3. 关闭连接
  • 客户端主动断开
  1. 客户端请求头带上close字段
  2. 服务端接收后,处理并断开连接
  3. 客户端接受资源,关闭连接
  • 好处
  1. 服务端:CPU和内存占用下降
  2. 无需每次异常关闭TCP
  3. 减少后续请求延时
  • 缺点:长时间连接可能导致无效占用

http和https

https = http + SSL/TLS

SSL/TLS是什么

是一层安全协议 主要依赖:散列函数,对称加密,非对称加密

  1. 散列函数 hash

    MD5...单项不可逆,输入敏感,输出长度固定。任何对于数据的修改都会导致输出值的变化

  2. 对称加密

    两者共用一种密钥,同时用其加解密 => 问题:如何保证密钥的传输安全性

  3. 非对称加密

    利用公钥和对应私钥的互相加解密能力 进行加密 => 问题:中间截取问题 => 数字证书:可信度高的机构