所谓Cross domain PHP Sessions,即不限于同一域名,不限于同一服务器,不限于同一IP的多个网站共享Session。
这种情况之下的Session共享,是一种极端情况,但却经常遇到。这是因为,我们常常有多站点单点登录,或共用用户数据库。一次登录多站可访问的通行证模式,是普遍受欢迎的方式。
实现的方法如下:
1、首先,你要使用memcache,memcached保存session, 从而能够使得session数据能够保存到不同域名,不同IP的服务器上。关于这一点,与多服务器共享Session的方法完全一样。所以,这里就不多讲了。
2、其次,保证多站点使用同一SESSIONID。这个方法很简单,只要把源站点的$_COOKIE['PHPSESSID']传给目标站点即可。我们清楚,PHP网站,总会在COOKIE中保存一个名为$_COOKIE['PHPSESSID']变量。所以,只要将这个传给目标站点即可。所以,接下来就是如何传的问题了。
3、建议的方法是,每一个网站建一个专用于跳转的PHP文件。此文件接收GET参数为目标跳转的URL。PHP只要根据参数生成象如下这样的代码即可:
header('Location: http://domain.com?sessid='.urlencode($_COOKIE['PHPSESSID']));
当然,这个PHP页面中,要对跳转的URL有所检测,是不是允许传入$_COOKIE['PHPSESSID']的域名。如果这个PHP文件我们称为siteurl.php,那么,页面中的链接就成了:
http://thisdomain.com/siteurl.php?url=newdomain.php
这样,页面中也就没有$_COOKIE['PHPSESSID']。
4、接受跳转的站点,可以通过以下途径读取这个共享的session.
在session_start()运行之前处理:
if ($_GET['sessid']){
session_id($_GET['sessid']);
}
这样,接受跳转的站点就可以读到已保存的session了
分享到:
相关推荐
然而,当涉及到跨域(即不同域名)的Session共享时,问题就变得稍微复杂了。本篇文章将深入探讨C#中如何实现不同域名之间的Session共享,以及这一功能的重要性和应用场景。 Session共享的主要目的是在多个网站或...
在这个场景中,我们关注的是如何在Tomcat集群环境中实现Session共享,以便提高应用程序的可扩展性和可用性。标题和描述提到的“session共享包”是解决这一问题的关键。 **什么是Session?** 在Web应用中,Session是...
5. **Spring Session**:Spring框架提供了一个名为Spring Session的模块,它可以与各种后端存储(如Redis、MongoDB等)集成,实现跨服务器的session共享。Spring Session提供了API和注解,方便在Spring MVC或Spring ...
这通常涉及到服务器集群的部署,其中Session共享是一个核心问题。本篇文章将探讨如何利用Redis、Tomcat和Nginx来实现Session共享,以便在分布式环境中保持用户状态的一致性。 首先,让我们了解一下Session的概念。...
本教程将详细介绍如何利用Tomcat 8或9以及Redis实现Session共享,支持Redis集群,以提高系统的可伸缩性和数据一致性。 首先,我们需要理解Session的概念。Session是服务器端用于存储用户状态的一种机制,通常在用户...
1. **粘性会话(Sticky Sessions)**:这是最简单的session共享方式,通过负载均衡器将特定用户的请求始终定向到最初创建session的服务器。这种方式简单但不灵活,如果目标服务器宕机,会话信息将丢失。 2. **共享...
【标题】"resis实现tomcat7 session 共享"主要涉及的是在分布式环境中如何实现Tomcat服务器间的Session共享问题。Resin(ReStructured Servlet & JSP Engine)是一款轻量级、高性能的Java应用服务器,它支持Servlet...
.NET Session共享是Web应用程序在分布式部署环境中解决用户会话数据跨服务器传递的一种技术。在传统的单服务器环境下,Session数据存储在服务器本地,但在多服务器负载均衡的场景下,同一个用户的请求可能被分配到...
本文将详细介绍如何使用Spring、Redis和Nginx来实现Tomcat集群中的Session共享,以及提供相关的源码下载。 首先,我们来看Spring框架。Spring是Java开发中最流行的开源框架之一,它提供了丰富的功能和模块,包括...
$mojo_app->sessions( MojoX::Session::Simple->new({ default_expiration => 24 * 60 * 60, # 24 hours }) ); # In app.psgi, build mojo app to enable Plack::Middleware::Session::Simple. use Plack::...
【标题】:“Tomcat Session共享负载” 在分布式系统中,Session共享是一个常见的需求,尤其是在多台服务器组成的集群环境中。Tomcat作为广泛使用的Java Web服务器,提供了多种方式来处理Session的共享,以实现负载...
Session共享是Web应用程序中一个关键的概念,它允许用户在不同页面间保持状态,这对于购物车、用户登录等应用场景至关重要。本篇文章将深入探讨基于Tomcat8的Session共享实现。 首先,理解Session的基本概念。...
然而,Tomcat集群中的Session共享成为一个关键问题,因为每个Tomcat实例都有独立的内存空间,不能直接共享Session数据。以下是几种常见的Tomcat集群Session共享方案,包括其实现过程、优缺点和可能遇到的问题。 1. ...
标题中的"Tomcat集群Session共享所有文件.zip"表明这是一个关于如何在三台服务器的Tomcat集群中实现Session共享的教程和代码集合。 Session共享的目的是确保用户在集群中的任何一台服务器上操作时,其状态都能被...
const StoreSession = require ( "mongoose-express-sessions" ) ( session ) mongoose . connect ( ) app . use ( session ( { secret : 's3cr37' , cookie : { maxAge : 1000 * 60 * 60 * 24 * 7 } , store : ...
标题提到的“tomcat7 + redis + nginx 实现session共享的jar包”就是解决这个问题的一种方案。下面将详细介绍这个方案中的关键技术点。 1. Tomcat7:Tomcat是一个流行的开源Java Servlet容器,用于部署和运行Java ...
为了实现跨应用程序的Session共享,可以配置所有应用程序使用同一个Session状态提供者。这可以通过在`web.config`文件中设置`<sessionState>`元素来完成,指定相同的`mode`(如SQL Server或StateServer)和`...
在"Share ASP.NET sessions between domains (高版本可用的CMOdel)"的压缩包中,包含了一个已经实现跨域Session共享的模型(CModel)。你可以直接使用这个模型作为起点,进行自己的项目集成。该模型可能包含了必要的...
本实践将探讨几种在Web项目集群中实现Session共享的策略。 1. **基于数据库的Session共享** - Session信息可以持久化到数据库中,每当用户操作导致Session变化时,更新数据库记录。 - 优点:数据可靠,不会因...
本教程将详细讲解如何利用Spring Boot、Nginx和Redis来实现高效的Session共享,以满足大规模并发场景下的会话管理需求。 **Spring Boot与Session管理** Spring Boot是基于Spring框架的快速开发工具,它简化了配置...