java 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、memcache

3、共享文件

三、跨域访问的方法

1、通过服务器(php脚本)

2、通过JavaScript

由于,各种原因。我选择的方案是:

1、cookie传递session_id

2、文件保存sesson信息

3、通过服务器脚本跨域

啥也不说了,上代码了。这两段代码都是用php脚本设置的

设置允许跨域的域名:

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';$allow_origin = array('http://two.google.com',

'http://three.google.com');header("Access-Control-Allow-Credentials: true");if(in_array($origin, $allow_origin)){header('Access-Control-Allow-Origin:'.$origin);

}

设置跨域的cookie

if(!isset($_COOKIE['session_idx'])){$session_id = session_id();setcookie("session_idx", $session_id, time()+3600*24*365*10, "/", ".google.com");//这里.google.com的作用是让www.google.com、two.google.com等二级域名可以共享这可cookie

$_SESSION['userName'] = 'ok';

}else{session_id($_COOKIE['session_idx']);

}echo $_SESSION['userName'];

访问跨域的api时,不附带cookie问题的解决代码,需要操作两个步骤:(使用jquery的ajax方法)

1、写好客户端的js代码

$("#getCodeBtn").click(function(){var phone = $("#phoneNum").val();

$.ajax({

type:"POST",

url:'http://www.google.com/index.php/register/getCode',

dataType:'jsonp',

data: {'phoneNum':phone, 'crossDomain':true},

xhrFields: {

withCredentials:true},

crossDomain:true,

success:function(data){if(data.responseCode == '101'){

alert('成功');

}else if(data.responseCode == '100'){

alert('失败');}

},

error:function(data1, data2, data3){

alert(data1+'--'+data2+'--'+data3);

}

});

});

2、写好服务器端的代码

//callback参数是jquery生成的$callBack = $_GET['callback'];$data = array('responseCode'=>'101', 'responseMessage'=>'success');

//下面的格式,才会被jquery解析$responseData = $callBack.'('.json_encode($data).')';echo $responseData;?>

这种方案,有不能跨服务器的缺陷。跨域还有些坑,有待发掘。

参考的网址:

http://blog.163.com/lgh_2002/blog/static/4401752620105810501715/

http://tw5566.iteye.com/blog/1945825

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值