【Java基础】Session跨域
来源:互联网 发布:js日历插件 编辑:程序博客网 时间:2024/05/06 15:05
之前项目中涉及到跨域问题(2个不同的域名访问同一个服务器)造成session丢失的问题,请求分发用的是nginx
总结了以下,常用的session处理方式有以下几种
ip_hash
【概念】当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上
upstream myproject { ip_hash; server 192.168.40.31:8070 //down 将服务器移除负载 server 192.168.40.16:8080; }
【缺点】使用ip_hash指令无法保证后端服务器的负载均衡,可能有些后端服务器接收的请求多,有些后端服务器收到的请求少,而且设置后端服务权重等方法将不起作用
关于ip_hash
session共享
第三方存储
【思路】把session数据保存到内存以外的一个统一的地方,例如Memcached/Redis等数据库中。那么问题又来了,如何替换掉Servlet容器创建和管理HttpSession的实现呢?(HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的)
方法
1). 设计一个Filter,利用HttpServletRequestWrapper,实现自己的 getSession()方法,接管创建和管理Session数据的工作(SpringSession)
Spring Session提供了一套创建和管理Servlet HttpSession的方案。Spring Session提供了集群Session(Clustered Sessions)功能,默认采用外置的Redis来存储Session数据,以此来解决Session共享的问题
参考
spring-session
spring-session-官方英文文档
spring-session-csdn-blog
2). 利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略(需要耦合Tomcat/Jetty等Servlet容器的代码)
参考(基于tomcat6或者7)
tomcat-redis-manager
tomcat-memcached-manager
session复制
与服务器有关
参考
tomcat中文文档
tomcat官方英文文档
http 无状态 token
百度百科(什么是无状态协议)
OAuth2文档
- 【Java基础】Session跨域
- java web基础 --- session
- java基础--session
- java项目使用memcache实现session共享+session基础
- JAVA基础(七)之Session
- java基础-会话技术Cookie&Session
- Java基础 web-cookie与session
- Session基础
- session基础
- Session基础
- session基础
- session基础
- Session基础
- Java基础-关于session的详细解释
- Java基础-关于session的详细解释
- Java基础-关于session的详细解释 (二)
- Java基础-关于session的详细解释 (一)
- Java基础-关于session的详细解释(一)
- servlet调用方式几种方法
- java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC
- 聚类系列-层次聚类(Hierarchical Clustering)
- 【Linux】Xshell 远程 Linux 显示图形化界面
- intellij idea开发android从入门到精通(六)————安装总结
- 【Java基础】Session跨域
- 页面添加控件打印
- Dmidecode命令详解
- FRUBMC使用手册
- Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码
- rsync报错整理
- RMAN恢复RAC备份到高版本单机环境
- linux 常见报错注释
- zeal工具的安装与使用(离线api文档浏览器)