1、常见的Http Method有哪些,使用场景分别是什么
http1.0定义了三种:
GET: 向服务器获取资源,比如常见的查询请求
POST: 向服务器提交数据而发送的请求
Head: 和get类似,返回的响应中没有具体的内容,用于获取报头
http1.1定义了六种:
PUT:一般是用于更新请求,比如更新个人信息、商品信息全量更新
PATCH:PUT 方法的补充,更新指定资源的部分数据
DELETE:用于删除指定的资源
OPTIONS: 获取服务器支持的HTTP请求方法,服务器性能、跨域检查等
CONNECT: 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户
TRACE:回显服务器收到的请求,主要用于测试或诊断
2、常见http状态码解析
浏览器向服务器请求时,服务端响应的消息头里面有状态码,表示请求结果的状态。
1XX: 收到请求,需要请求者继续执行操作,比较少用;
2XX: 请求成功,常用的 200;
3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取;
301:永久性跳转,比如域名过期,换个域名 302:临时性跳转
使用场景:网站改版、域名迁移等,多个域名指向同个主站导流
4XX: 客户端出错,请求包含语法错误或者无法完成请求
400: 请求出错,比如语法协议
403: 没权限访问
404: 找不到这个路径对应的接口或者文件
405: 不允许此方法进行提交,Method not allowed,比如接口一定要POST方式,而你是用了GET
5XX: 服务端出错,服务器在处理请求的过程中发生了错误
500: 服务器内部报错了,完成不了这次请求
503: 服务器宕机
3、Cookie和Session的区别和联系
cookie数据保存在客户端,session数据保存在服务端
cookie不是很安全,容易泄露,不能直接明文存储信息
cookie大小和数量存储有限制
4、介绍下JWT
JWT(JSON Web Token) 是一种开放标准,用于在网络应用环境中安全地传输声明,通常用于身份验证和授权。它基于JSON格式,通过加密或签名确保数据的完整性和可信度。
JWT格式组成 头部(header)、负载(payload)、签名(signature)。
- 头部:主要是描述签名算法
- 负载:主要描述是加密对象的信息,如用户的id等,也可以加些规范里面的东西,如iss签发者,exp 过期时间,sub 面向的用户
- 签名:主要是把前面两部分进行加密,防止别人拿到token进行base解密后篡改token
通俗来说,就是通过一定规范来生成token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息。
使用JWT的优点:
- 生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库
- 存储在客户端,不占用服务端的内存资源,使用加解密的方式进行校验,在分布式业务中能较好的提高性能和节省空间
使用JWT的缺点:
- token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如用户权限,密码等
- 如果没有服务端存储,则不能做登录失效处理,除非服务端改秘钥
生成的token,在客户端或者浏览器是存储在cookie,localstorage和sessionStorage里面的。
5、浏览器输入一个url到用户看到结果,中间经过哪些流程
1、浏览器输入url, 解析url地址是否合法
2、浏览器检查是否有缓存, 如果有直接显示。如果没有跳到第三步。
3、在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址。
4、浏览器向服务器发起tcp链接,完成tcp三次握手
5、握手成功后,浏览器向服务器发送http请求
6、服务器收到处理的请求,将数据返回至浏览器
7、浏览器收到http响应。
8、浏览器解析响应。如果响应可以缓存,则存入缓存
9、浏览器进行页面渲染
6、什么是浏览器同源策略
浏览器同源策略是浏览器实施的一种安全机制,旨在防止不同来源的网页内容互相访问或操作,从而保护用户隐私和数据安全。
同源策略规定:只有协议、域名、端口均相同的两个页面,才被视为“同源”。若其中任意一项不同,则视为“不同源”。
解决方法:
-
JSONP
-
页面这层再包装一层服务,目前最多就是nodejs
-
Http响应头配置允许跨域
比如:
//表示接受任意域名的请求,也可以指定域名
response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));