`
天梯梦
  • 浏览: 13731461 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

跨域共享session (实现http跳转https 共享session)

PHP 
阅读更多

在网上找了很多,终于搞明白了,也行不是最好的办法,但确实非常使用的方法。

 

其中最重要的就是 设置session id 至 本地 cookies 当中, 采用如下方法:

 

$currentSessionID = session_id();
 

 

session_id($currentSessionID );

 

 

简单实例:

 

Script 1(HTTP) :

 

<?php

// This script will create a session and display a link to your secure server address
// to transfer your session ID. In this example, the secure page to receive the session
// ID is located at http://www.yoursite.com/safePages/securePage.php

// Start a session using the current session ID stored in a cookie, or create
// a new session if none is set.

session_start();

$currentSessionID = session_id();

// Set a variable that will be retrieved with the HTTPS script.
$_SESSION['testvariable'] = 'It worked';

// $secureServerDomain is the domain of your secure server
$secureServerDomain = 'www.yoursite.com';

// $securePagePath is the path to the page that will receive and set the session ID.
$securePagePath = '/safePages/securePage.php'

echo '<a href="https://' . $secureServerDomain . $securePagePath . '?session="' . $currentSessionID . '">Click here to transfer your session to the secure server</a>';

?>
 

Script 2(HTTPS) :

 

<?php

// Retrieve the session ID as passed via the GET method.
$currentSessionID = $_GET['session'];

// Set a cookie for the session ID.
session_id($currentSessionID);

// Start a session.
session_start();

// Test retrieval of variable set when using HTTP.
if (!empty($_SESSION['testvariable'])) {
      echo $_SESSION['testvariable'];
} else {
      echo 'It did not work.';
}

?>
 

 

但是要注意的是:

http://www.mysite.com/page.php   跳转到 https://www.mysite.com/page.php

或者

http://mysite.com 跳转到 https://mysite.com/page.php.

 

关于安全性:

 

应该讲和传统的登录验证安全性一样。都是不太安全的。因为sid的传输是没有加密的,别人也可以通过监听,嗅探来获取这个session id,也就获取了你的session数据。因此后面可以考虑将session id信息加密之后进行传输。

 

 

另一种就是采用数据库的方式:

 

见附件。

 

 

require_once "session.class.php";
$oSession = new Session();
print_r($_SESSION); // First
$_SESSION['hi'] = "lisha"; // Comment this Once sessoin is set
$_SESSION['test'] = "gideon"; // Comment this Once sessoin is set

echo '===========';
//Now use php sessions as usual
print_r($_SESSION); // First
 

 

说明一下的是,需要用到 session_set_save_handler 函数,它要配合 ini_set('session.save_handler', 'user'); 一起使用!

 

 

 

 

分享到:
评论

相关推荐

    iframe 跨域访问session

    3. **文档源(Document Origin)**:如果`iframe`的源和父页面可以通过设置相同的协议(http/https)、主机名和端口实现完全匹配,那么它们就被认为是同源的,可以共享`session`。 4. **PostMessage API**:这是一...

    php中http与https跨域共享session的解决方法

    在PHP中处理HTTP和HTTPS跨域Session时,开发者需要手动管理Session ID的传递,同时关注安全问题。通过在客户端存储Session ID,并在请求中携带,可以实现在不同协议间的Session共享。然而,必须采取适当的加密和安全...

    处理session跨域几种方案

    当用户在不同域之间跳转时,如果不进行特殊处理,Session信息将无法跨域共享。 以下是一些处理Session跨域的常见方案: 1. **共享sessionId**: - **设置共同的Cookie**: 当用户在主域(如`.a.com`)登录后,...

    PHP简单实现HTTP和HTTPS跨域共享session解决办法

    总之,实现HTTP和HTTPS跨域共享session的关键在于手动管理和传递session ID。虽然上述方法简单实用,但需要注意其可能带来的安全问题。在实际应用中,应结合加密和安全策略,以确保用户数据的安全。

    asp.net 跨子域共享SESSION

    在ASP.NET中实现跨子域共享SESSION,主要有以下几种方法: 1. **Cookie-Based Sharing**: 这是最常见的方法,通过设置Cookie的`Domain`属性来实现。将Session ID存储在Cookie中,并设置Cookie的域为父域,如`....

    c#实现cookie和session的登陆实例

    在Web开发中,Cookie和Session是两种常见的用户身份验证机制,尤其在C#编程语言中,它们被广泛用于实现登录功能。本实例将探讨如何在C#环境下利用Cookie和Session来处理用户登录状态。 首先,我们要理解Cookie和...

    session session session szsessdifn

    3. 不能跨域共享:每个域名有自己的Session,不同域间的页面无法直接共享Session数据。 4. 安全性:Session信息存储在服务器端,相对安全,但若Session ID被窃取,可能会导致安全性问题。 5. 依赖客户端:如果用户...

    PHP关于IE下的iframe跨域导致session丢失问题解决方法

    这段代码的作用是设置HTTP头中的P3P(Platform for Privacy Preferences Project)政策,允许不同域之间的iframe进行某些级别的数据共享,包括Session。P3P头的`CP`参数表示饼干(Cookie)策略,这里的`ALL ADM DEV ...

    用script跳转方式主动跨域获取cookie或session(并非网上铺天盖地的主动设置法)

    &lt;script src=\"http://a.com/openid.aspx?sessionid="+ sessionid +"\"&gt;&lt;/script&gt; sessionid 为每个用户登录到A域后生成的唯一标识。 B域根据这个标识来确定是否更新自己域的cookie,每次更新后都需刷新页面一次,这...

    jsp的session介绍

    3. **跨域限制**:Session无法跨域共享,不同子域名之间无法共享Session信息。 **使用Session的注意事项** 1. **合理设置生命周期**:避免设置过短导致用户频繁登录,过长则浪费服务器资源。 2. **控制Session使用...

    完美解决ajax访问遇到Session失效的问题

    最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html:&lt;...显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不

    nginx反向代理导致session失效的问题解决

    一同事求援:后台系统的登录成功了,但不能成功登进系统,仍然跳转到登录页,但同一套代码另一个环境却没有问题。 背景 经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个...

    tomcat nginx redis 负载均衡session 共享 所需jar 包

    总的来说,通过Nginx实现负载均衡,结合Redis和相应的Java库,我们可以构建一个高可用且能有效处理Session共享的Web环境。这个压缩包提供的jar包正是实现这一目标的关键组件。在实际部署时,需要正确配置Nginx的...

    Session丢失

    (6) **跨域处理**:使用`P3P`协议或者通过服务器端代码共享Session ID来解决跨域问题。 (7) **监控和日志记录**:定期检查服务器性能,记录Session丢失的异常情况,便于分析和调试。 以上是关于ASP.NET中Session...

    .NET Core2.0+MVC 用session,cookie实现的sso单点登录

    本项目使用session和cookie技术来实现这一功能,下面我们将详细探讨这些关键知识点。 首先,我们要理解**session**和**cookie**在SSO中的角色。Session是服务器端存储的一种机制,用于保存用户会话数据。当用户登录...

    微信小程序用户登录、注册、SESSION同步、交互等

    - **SESSION存储**:SESSION通常存储在服务器端,避免跨域问题和数据安全性。 - **客户端同步**:将SESSION ID返回给微信小程序,小程序将其保存在本地,通常是缓存或者全局变量中。 - **后续请求携带SESSION**:...

Global site tag (gtag.js) - Google Analytics