1. cookie和session的区别? (重点)
-
存储位置不同, cookie存放在客户端电脑中, 是一个磁盘文件, ie浏览器是可以从文件夹中找到的. session是存放在服务器内存中的一个对象. chrome浏览器进行安全处理, 只能通过浏览器找到. session是服务器端会话管理技术, 并且session就是cookie实现的
-
存储容量不同
-
单个cookie保存的数据 <= 4kb, 一个站点最多保存20个cookie
-
对于session来说并没有上限, 但出于对服务器性能考虑, session内不要放过多的东西, 并且设置session删除机制.
-
-
存储方式不同
-
cookie 中只能保管 ASCII 字符串,并需要通过编码方式存储为 Unicode 字符或者二进制数据。
-
session 中能够存储任何类型的数据,包括且不限于 string,integer,list,map 等。
-
-
隐私策略不同
-
cookie 对客户端是可见的,别有用心的人可以分析存放在本地的 cookie 并进行 cookie 欺骗,所以它是不安全的。
-
session 存储在服务器上,不存在敏感信息泄漏的风险。
-
-
有效期上不同
-
开发可以通过设置cookie 的属性,达到使 cookie 长期有效的效果。
-
session 依赖于名为JSESSIONID 的cookie,而 cookie JSESSIONID 的过期时间默认为-1,只需关闭窗口该 session 就会失效,因而 session 不能达到长期有效的效果
-
-
服务器压力不同
-
cookie 保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie 是很好的选择。
-
session 是保管在服务器端的,每个用户都会产生一个 session。假如并发访问的用户十分多,会产生十分多的 session,耗费大量的内存。
-
2. HTTP中重定向和请求转发的区别
-
重定向是两次请求, 请求转发是一次请求,
-
重定向地址栏会变, 请求转发地址栏不变
-
重定向是浏览器跳转, 请求转发是服务器跳转
-
重定向可以跳转到任意网址, 请求转发只能跳转当前项目
-
请求转发不会丢失请求数据, 重定向会丢失
3. Get和Post的区别
get请求建议将参数放在url中, 但是这只是http规范中的建议, 也可以将数据放在body中
post一般将参数放在body中, 也可以传递文件
4. 什么是Token
Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
token一般都需要在后端服务保存一份,比如使用redis保存。如果不想保存,可以使用jwt方案。
5. 如何解决跨域问题
跨域指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安全限制。
所谓同源指的是:协议、域名、端口号都相同,只要有一个不相同,那么都是非同源。
解决方案:
1:使用ajax的jsonp
2:nginx 转发:利用nginx反向代理,将请求分发到部署相应项目的tomcat服务器,当然也不存在跨域问题。
3:使用cors:写一个配置类实现WebMvcConfigurer接口或者配置FilterRegistrationBean 网关也可以配置跨域,如果网关配置了跨域,后边微服务一般不需要配置