1、Http请求头中的常见关键字
1、请求方式:GET、POST、PUT;
2、服务器域名地址:Host;
3、User-Agent:HTTP客户端浏览器运行的浏览器类型的详细信息;
4、Accept:指定客户端浏览器能够接受的内容类型;
5、Accept-Language:指定客户端浏览器优先展示信息的语言;
6、Accept—Encoding:指定客户端浏览器可以支持的服务器返回内容压缩编码类型;
7、Accept-Charset:浏览器可以接受的字符编码集;
8、Content-Type:显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置;
9、Connection:表示是否需要持久连接;
10、cookie:HTTP请求时,会把保存在该域名下的所有cookie值一起发送给web服务器;
11、Referer:包含一个url,用户从该url代表的页面发出访问当前请求的页面
2、JSON和JSONP区别
JSON和JSONP是两种不同的概念。
JSON:是一种数据交换格式,是一种字符串
JSONP:是一种解决跨域问题的请求方式,本质是利用了script标签具有的课跨域性的特点。
3、如何保证请求的幂等性,防重的原理
1、常见的解决幂等性的方法
唯一索引:防止新增脏数据
token机制:防止页面重复提交
悲观锁:获取数据的时候加锁(锁表或锁行)
乐观锁:基于版本号version实现, 在更新数据那一刻校验数据
分布式锁:redis(jedis、redisson)或zookeeper实现
状态机:状态变更, 更新数据时判断状态
2、token机制的详解:
为需要保证幂等性的每一次请求创建一个唯一标识token,先获取token,并将token保存在redis中,请求接口时,将此token放到header或者作为请求参数请求接口,后端接口判断redis中是否有此token。如果存在,正常处理业务,并从redis中删除此token。如果是重复请求,由于token已经删除,则不能通过校验,返回一个请勿重复操作的提示。如果不存在,说明参数不合法或者请求重复,返回提示就可以了。
4、正常保存到cookie中是否需要设置过期时间
每一个cookie都有自己的过期时间,默认时关闭浏览器为止。
需要设置,由于cookie保存在本地,因此无法直接将其移除,当用户关闭浏览器又马上打开浏览器,就需要重新登录。
现在浏览器都有一个帮助保存密码功能,所以也可以不设置。
$.cookie("名称","值",{expires:失效时间}) expires设置失效时间
5、token是怎么放入cookie中的
新建一个cookie
HttpServletRequest request
HttpServletResponse response
Cookie cookie = new Cookie("token","cookievalue");
response.addCookie(cookie);
6、cookie和session的区别
1、cookie数据存放在客户端,session数据放在服务器端;
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE;
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。所有浏览器最多存放300个cookie
7、cookie的总结
1、存储的物理位置。客户端的Cookies文件夹内;
2、存储的类型限制。字符串;
3、状态使用的范围。当前请求上下文的上下文都能访问到Cookie,Cookie对每个用户来说都是独立的;
4、存储的大小限制。每个Cookie不超过4K数据。每个网站不超过20个Cookie。所有网站的Cookie总和不超过300个;
5、生命周期。每个Cookie都有自己的过期时间,超过了过期时间后失效;
6、安全与性能。存储在客户端,安全性差。对于敏感数据建议加密后存储;
7、优点缺点与注意事项。可以很方便地关联网站和用户,长久保存用户设置;
*如果不设置Cookies的过期时间则默认为关闭浏览器Cookies生命周期到期。
持续更新中。。。