http 面试题

1、状态码分类(status code)

1XX:服务器收到请求
2XX:请求成功,如200
3XX:重定向,如302
4XX:客户端错误,如404
5XX:服务端错误,如500

2、常用的状态码

200成功

301:永久重定向(换域名)配合response.header里面的location,下次访问直接访问新地址
302:临时重定向配合response.header里面的location,下次访问还是访问这个旧地址
304:资源未被修改

403:没有权限
404:资源未找到

500:服务器错误
502:网关错误,502 Bad Gateway即在服务器以代理服务器或网关的形式工作时,收到从上游服务器到达的执行请求的非法响应
504:网关超时,是指服务器作为网关或代理,但是没有及时从上游服务器收到请求

3、关于协议和规范

就是一个规范,大家都跟着执行,不违反规范

4、Restful API

传统的API:把每个url当成一个功能
Restful API:把每个url当成一个唯一的资源,用method来表示操作类型

"传统的API": "/api/article?list=1"
"Restful API": "/api/list/1"

Restful API 的method

  • get获取一个数据
  • post创建一个数据
  • patch/put修改一个数据
  • delete删除一个数据

5、http headers

Request Headers

  • Accept:浏览器可支持的数据类型
  • Accept-Encoding:浏览器可接受的压缩格式,如gzip
  • Accept- Language:浏览器可接受的语言,如zh-CN
  • Connection:keep-alive一次TCP连接重复使用
  • cookie:每次发送浏览器自带
  • host:主机地址
  • User-Agent:浏览器信息
  • Content-Type:发送数据的格式,如post或者patch:application/json

Response Headers

  • Content-Type:服务器返回的数据格式
  • Content-length:返回数据的长度
  • Content-Encoding:返回的数据的压缩格式
  • Set-Cookie:服务器想要修改的Cookie的内容

6、HTTP缓存

为了加快浏览速度,可以通过缓存css,js等方式,减少网络请求,
提高访问速度

http缓存-强制缓存

  • 浏览器初次向服务器请求资源的时候,如果服务器觉得这个资源可以缓存,会返回资源,并且在response headers里面返回Cache-Control,如Cache-Control:max-age=327771,单位是秒,浏览器,就会保存这个数据,并且在下一次访问这个资源的时候,如果没过期或者失效,就会直接从缓存获取到资源(请求的资源的size:disk cache的时候,这个资源就是缓存里面的资源)
  • Cache-Control的值:
    max-age:缓存的最大时间
    no-cache:不用本地强制缓存
    no-store:不用本地强制缓存,也不让服务器做缓存
    private:只允许用户做缓存
    public:可以让中间路由和中间路由做缓存
  • Expires:这个也是控制缓存的,但是已经被Cache-Control取代了,出现了就是为了兼容

http缓存-协商缓存(对比缓存)

  • 它是一种服务端缓存策略,每次请求的时候,服务端根据资源标识判断客户端里面的资源和现在的资源一不一样,如果一样,就返回304资源未修改,然后浏览器用缓存的资源。
  • 服务端是如何判断资源是不是一样的?
    当浏览器第一次请求资源的时候,服务端会返回资源,并且带着资源标识(比如Last-Modified/Etag),当浏览器第二次请求的时候会带着这个资源标识(在请求头里面有个If-Modified-Since/If-None-Match,值是上次服务端返回的Last-Modified/Etag的值),服务端判断如果资源一致就返回304,不一致就返回新的资源和标识。
  • 资源标识
    在response header里面,有两种:
    第一种是Last-Modified资源最后修改时间
    第二种是Etag资源的唯一标识(根据内容生成一个唯一的字符串)
    这两个共存的话会优先Etag,应为Last-Modified只能精确到秒级,Etag更精准

http缓存

不同的刷新对强制缓存和协商缓存的影响

  • 正常刷新:输入栏,导航跳转,前进后退(两个都在)
  • 手动刷新:F5/ctrl+r或者右键然后按钮刷新(只有协商缓存还在)
  • 强制刷新:ctrl+shift+r/command+shift+r(两个都不在)

Https协议

http是明文传输,https是加密传输

https的加密方式

  • 对称加密:一个key同时用来加密和解密
  • 非对称加密:一个公钥一个私钥,公钥用来加密,私钥用来解密
  • https同时用到了两种加密方式,首先把对称加密的key通过非对称加密的方式生成,然后在用这个key进行传输,这样是节省成本,因为非对称加密需要用的算法多,时间久。

https证书

  • 防止中间人攻击:黑客通过替换我们非对称加密的公钥来获取数据,然后用自己的私钥来解密,然后劫持信息
  • 第三方的https证书提供公钥,浏览器和第三方进行校验证书
    完整的https校验
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值