聊一聊实现Session跨域的问题

本文来自有着丰富经验的大神和一个小白的对话!  

 为了阅读方便,小白代号Q, 大神代号W

Q: 怎么实现session跨域?

W: 别用系统session即可

Q: 那用什么session ?自己存session?

W: 自己有啥不行吗   系统的方案是改配置,允许一些域。 不过没用直接自己处理会话来的干脆实际   

  会话信息就是你说的session 默认系统是跟域名绑定的。但是跨域的本质是后端多系统共享,所以在后端处理数据存取最为直接

路人甲: 现在不是流行 token吗 ? 这不就是一个另类的session吗

Q: token和session不是一回事 token保存数据库的

Q: token不就标识嘛?怎么存数据?

W: 一般sessionid可以认为是一种token

路人甲:session一般实现也是在cookies中存了个token。

W:就是cookies里那个 所以session怎么可能是t

Q: key是在cookie,value是在服务端吧

W:但是这也说明了为什么我说自己实现就可以回避系统的域限制了   

  前端token 后端 基于token的分布式缓存系统 用来替代session机制 已经是现实情况了。。。

路人甲:token是保存在数据库,还是另一台服务器,如缓存,nosql

W: token是前后端都有的一串值 用此来维系 一对关系 就等于是session的 key了   

  每个用户一个session对象 一个会话对象 一个key 一个token   

  token在分布式里应该保存在redis memcached 这类高速内存数据库

《个人整理,有什么不合理的地方请在下面留言评论》

时间: 2024-08-12 13:36:44

聊一聊实现Session跨域的问题的相关文章

session跨域共享解决方案

要让session跨域共享,需要解决三个问题: 1.通过什么方法来传递session_id? 2.通过什么方法来保存session信息? 3.通过什么方法来进行跨域 一.传递session_id有4种方法 1. 通过cookie 2. 设置php.ini中的session.use_trans_sid=1,让PHP自动跨页传递session id 3. 手动通过url或隐藏表单传值 4. 用文件或数据库方式传递,在通过其他key对应取值 二.保存session信息有3种方法 1.数据库 2.mem

java:sso(单点登录(single sign on),jsp文件动静态导入方式,session跨域)

1.jsp文件导入: 2.session跨域: 3.sso(单点登录(single sign on): sso Maven Webapp: LoginController.java: package com.sso.demo.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans

使用Spring Session和Redis解决分布式Session跨域共享问题

前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 文末分享了我一部分私人收藏 有兴趣的可以收藏看一下的 都是架构师进阶的内容 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session共享功能,将Sessi

Redis实战和核心原理详解(5)使用Spring Session和Redis解决分布式Session跨域共享问题

Redis实战和核心原理详解(6)使用Spring Session和Redis解决分布式Session跨域共享问题 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提

【分布式系列】session跨域及单点登录解决方案

Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息.让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器:接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Res

session跨域和ajax跨域名

后台跨域和ajax跨域名: 后台跨域: www.baidu.com   主域名(一级域名一般以www开头) news.baidu.com   二级域名 (a.test.com和b.test.com有相同的域,和test.a.com不是同一个域) 同一个域下可以使用setcookie( '名字' , 'session_id' , 'time()+3600' , '/' , '域' );来存储session_id. 例如:a.php在a.test.com下    b.php在b.test.con下

session跨域丢失问题

配置一个 filter 1 package com.psm.filter; 2 3 import javax.servlet.*; 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import java.io.IOException; 7 8 /** 9 * 添加Ajax Access-Control-Allow-Origin跨域请求 10 * 1

php实现SESSION跨域

稍微大一点的网站,通常都会有不只一个服务器,每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二级域名,比如www.a.com.i.a.com.bbs.a.com.而一个整体性强的网站,用户系统是统一的,即一套用户名.密码在整个网站的各个子系统中都是可以登录使用的.各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可.但还存在一个问题,就是用户在i.a.com登录之后,进入www.a.com时,仍然需要重新登录,基本的通行

thinkphp session跨域

1 .在config.PHP中添加 'SESSION_OPTIONS'=>array('domain'=>'.caizhimofang.con'),//session配置    'COOKIE_DOMAIN'=>'.caizhimofang.con',//cookie域名 2.在入口文件 index.php中添加 ini_set('session.cookie_domain', ".caizhimofang.com");