HTTP协议——面试专题

HTTP协议——面试专题


HTTP协议——面试专题

  • HTTP协议——面试专题
  • 前言
  • 一、http状态码和method知识点考查
    • 1、常见的Http Method有哪些,使用场景分别是?
      • http1.0定义了三种:
      • http1.1定义了六种
    • 2、常见http状态码解析
      • 1XX:
      • 2XX:
      • 3XX:
      • 4XX:
      • 5XX:
  • 二、 http协议无状态解决方法
    • 1、Cookie和Session的区别和联系
    • 2、你们公司C端业务登录的是怎样做的(业务量大,集群部署)
  • 三、 分布式业务场景的常见登录解决方案JWT
    • 1、JWT定义
      • JWT格式组成
        • 头部:
        • 负载:
        • 签名:
    • 2、JWT优缺点
      • 优点
      • 缺点
    • 3、JWT生成的token,在客户端或者浏览器是怎么存储的
      • cookie:
      • localstorage:
      • sessionStorage:
  • 四、浏览器网络请求链路
  • 五、浏览器同源策略
  • 六、浏览器跨域
    • 跨域:
    • 解决方法
      • JSONP
      • 页面这层再包装一层服务,目前最多就是nodejs
      • Http响应头配置允许跨域
        • 1、nginx代理服务器
        • 2、后端程序代码配置
  • 总结

前言

HTTP协议——面试专题。


一、http状态码和method知识点考查

1、常见的Http Method有哪些,使用场景分别是?

http1.0定义了三种:


GET: 向服务器获取资源,比如常见的查询请求
POST: 向服务器提交数据而发送的请求
Head: 和get类似,返回的响应中没有具体的内容,用于获取报头

http1.1定义了六种


PUT:一般是用于更新请求,比如更新个人信息、商品信息全量更新
PATCH:PUT 方法的补充,更新指定资源的部分数据
DELETE:用于删除指定的资源
OPTIONS: 获取服务器支持的HTTP请求方法,服务器性能、跨域检查等
CONNECT: 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户,网页开发基本不用这个方法,如果是http代理就会使用这个,让服务器代理用户去访问其他网页,类似中介
TRACE:回显服务器收到的请求,主要用于测试或诊断

2、常见http状态码解析

浏览器向服务器请求时,服务端响应的消息头里面有状态码,表示请求结果的状态

分类

1XX:

收到请求,需要请求者继续执行操作,比较少用

2XX:

请求成功,常用的 200

3XX:

重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取;

好处:网站改版、域名迁移等,多个域名指向同个主站导流
必须记住: 301:永久性跳转,比如域名过期,换个域名 302:临时性跳转

4XX:

客服端出错,请求包含语法错误或者无法完成请求
必须记住:
400: 请求出错,比如语法协议
403: 没权限访问
404: 找不到这个路径对应的接口或者文件
405: 不允许此方法进行提交,Method not allowed,比如接口一定要POST方式,而你是用了GET

5XX:

服务端出错,服务器在处理请求的过程中发生了错误
必须记住:
500: 服务器内部报错了,完成不了这次请求
503: 服务器宕机

二、 http协议无状态解决方法

1、Cookie和Session的区别和联系

cookie数据保存在客户端,session数据保存在服务端
cookie不是很安全,容易泄露,不能直接明文存储信息
Cookie大小和数量存储有限制

2、你们公司C端业务登录的是怎样做的(业务量大,集群部署)

部分业务是采用redis替代本身的tomcat单机session (业务需要高度可控)

还有其他业务是使用JSON Web token (C端普通业务)

三、 分布式业务场景的常见登录解决方案JWT

1、JWT定义

JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名

JWT格式组成

头部、负载、签名
header+payload+signature

头部:

主要是描述签名算法

负载:

主要描述是加密对象的信息,如用户的id等,也可以加些规范里面的东西,如iss签发者,exp 过期时间,sub 面向的用户

签名:

主要是把前面两部分进行加密,防止别人拿到token进行base解密后篡改token

简单来说: 就是通过一定规范来生成token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息

 {id:888,name:'ccc',expire:10000}funtion 加密(object, appsecret){xxxxreturn base64( token);}
​function 解密(token ,appsecret){​xxxx//成功返回true,失败返回false}

2、JWT优缺点

优点

生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库
存储在客户端,不占用服务端的内存资源,使用加解密的方式进行校验,在分布式业务中能较好的提高性能和节省空间

缺点

token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如用户权限,密码等
如果没有服务端存储,则不能做登录失效处理,除非服务端改秘钥

3、JWT生成的token,在客户端或者浏览器是怎么存储的

可以存储在cookie,localstorage和sessionStorage里面

cookie:

key-value形式,直接添加就可以

localstorage:

H5新增的,存储数据不会随着浏览器关闭打开而消失

sessionStorage:

浏览器关闭存储的数据会消失掉,业务信息敏感可以使用。

四、浏览器网络请求链路

浏览器输入url到用户看到结果的整个流程
1、浏览器输入url, 解析url地址是否合法

2、浏览器检查是否有缓存, 如果有直接显示。如果没有跳到第三步。

3、在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址。

4、浏览器向服务器发起tcp链接,完成tcp三次握手

5、握手成功后,浏览器向服务器发送http请求

6、服务器收到处理的请求,将数据返回至浏览器

7、浏览器收到http响应。

8、浏览器解析响应。如果响应可以缓存,则存入缓存

9、浏览器进行页面渲染

五、浏览器同源策略

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。

由Netscape提出的一个著名的安全策略。

当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面

当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,

即检查是否同源,只有和百度同源的脚本才会被执行。

如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收

六、浏览器跨域

跨域:

浏览器同源策略 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"
协议相同 http https
域名相同 www.xdclass.net
端口相同 80 81

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域

浏览器控制台跨域提示:
No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘null’ is therefore not allowed access.

解决方法

JSONP

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的

页面这层再包装一层服务,目前最多就是nodejs

Http响应头配置允许跨域

1、nginx代理服务器

2、后端程序代码配置

//程序代码中处理 SpringBoot 通过拦截器配置//表示接受任意域名的请求,也可以指定域名
response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));//该字段可选,是个布尔值,表示是否可以携带cookie
response.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");response.setHeader("Access-Control-Allow-Headers", "*");

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

HTTP协议——面试专题相关推荐

  1. Dubbo面试专题总结

    Dubbo面试专题总结 文章目录 Dubbo面试专题总结 1. Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么? 2. dubbo 服务负载均衡策 ...

  2. hashmap中用红黑树不用其他树_HashMap面试专题:常问六题深入解析

    引言 其实我很早以前就想写一篇关于HashMap的面试专题.对于JAVA求职者来说,HashMap可谓是集合类的重中之重,甚至你在复习的时候,其他集合类都不用看,专攻HashMap即可. 然而,鉴于网 ...

  3. BAT Android面试专题深入探究:四大组件+ViewPager+组件化架构+Bitmap

    本篇是结合我之前面试别人的经验,以及跟一些在BAT上班的朋友,讨论总结出的一份很深的大公司需要用到的一些高端Android技术.这里也专门整理了一个文档,重点和难点都有详细解析.这些题目有点技术含量, ...

  4. php面试专题---2、常量及数据类型考点

    php面试专题---2.常量及数据类型考点 一.总结 一句话总结: 变量为null和变量判断为false的情况需要仔细注意下 1.PHP中字符串可以使用哪三种定义方法以及各自的区别是什么? 单引号:不 ...

  5. php面试专题---MYSQL查询语句优化

    php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...

  6. mysql优化php面试_php面试专题---18、MySQL查询优化考点

    php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...

  7. 【Java架构师面试题】设计模式面试专题(共35题含答案)

    设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健性以及安全性的解决方案. 本篇为设计 ...

  8. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  9. php面试专题---6、正则表达式考点

    php面试专题---6.正则表达式考点 一.总结 一句话总结: 正则匹配步骤:1.先写出一个要匹配的字符串:2.自左向右的顺序使用正则表达式的原子和元字符进行拼接:3.最终加入模式修正符: 1.写出一 ...

最新文章

  1. 还原JavaScript的真实历史~
  2. OpenKruise v1.0:云原生应用自动化达到新的高峰
  3. mysql命令行查看表的触发器_Mysql事项,视图,函数,触发器命令(详解)
  4. Spring Cloud Security:Oauth2使用入门
  5. java 堆排序方式_幾種排序方式的java實現(02:希爾排序,歸並排序,堆排序)
  6. Trie树(c++实现)
  7. ssh整合出现的错误
  8. 噩耗!吴孟达去世,终年68岁!
  9. 使用bash编写Linux shell脚本--调试和版本控制
  10. 老游戏与你共渡亲子时光
  11. 《计算机网络 自顶向下方法》(第7版)答案(第三章)(一)
  12. Keras nlp入门 imdb电影评论分类
  13. ioi 赛制_徐明宽IOI2017参赛总结及他的信息学竞赛之路
  14. maven发布SNAPSHOT版本到私服仓库
  15. ​PDF如何转换成Word文档?分享两种好用的转换方法
  16. 网易云易盾推出面向微信小程序的大数据反作弊产品
  17. Apache基于域名、端口、IP的虚拟主机配置(Centos 6.5)
  18. 性能测试——各大厂质量保障实践分享汇总
  19. 创业团队 磨合 团队稳定 团队成员
  20. VS2015 安装.NET Core

热门文章

  1. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.3 层次结构和复合角色...
  2. 哥德巴赫猜想(java)
  3. 数据库SQL实战11_获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date=‘9999-01-01‘, 结果第一列给出员工的emp_no, 第二列给出其manager
  4. 谷歌2017面经题集
  5. CUDA C 编程指导(二):CUDA编程模型详解
  6. 龙讯系列视频转换,LT9211,LT8918,功能:lvds转BT656,lvds转mipi(CSI\DSI)RGB转MIPI(DSI\CSI) BT656\601\1120转HDMI1.4\DVI
  7. 第二讲:项目运行环境 事业环境因素 (EEF) 和组织过程资产 (OPA)
  8. 利弗莫尔的操盘精华篇
  9. matlab显示英文字母,#EXCEL函数判断是数字还是字母#excel表格列显示字母
  10. 网站商务通使用总结: