要让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、写好服务器端的代码

<?php
   //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

session跨域共享解决方案的更多相关文章

  1. session跨域共享问题解决方案

    在讨论 session 跨域共享问题之前,我们首先要了解 session 做了什么,没做什么 1.HTTP是无状态的,也就是说服务器不知道谁访问过他,但是有时间,又需要我们去保留这个状态比如说用户的登 ...

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

    http://blog.csdn.net/xlgen157387/article/details/57406162 使用Spring Session和Redis解决分布式Session跨域共享问题

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

    使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...

  4. thinkphp session 跨域问题解决方案

    session 跨域,困扰我好几天,今天终于弄明白了! 不管是thinkphp ,还是本身的php 其实都要设置session.cookie_domain 设置好,就OK了 在thinkphp 里,在 ...

  5. Yii2 框架下 session跨域共享互通

    在项目实施过程中,往往把一个大项目进行分拆成几个独立的项目,项目用完全独立的域名和文件,可以放到不同的服务器上的独立分项目. 几个子项目共用一个登录点. 原理简单来说就是服务端session 共享, ...

  6. session跨域共享

    www.maxomnis.com的index.php文件内容 <?phpsession_start();setcookie("user", "alex proter ...

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

    Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息. ...

  8. sso单点登录的入门(Session跨域、Spring-Session共享)

    1.单点登录,就是多系统,单一位置登录,实现多系统同时登录的一种技术.单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 区分与三方登录(第三方登录) ,三方登录:某系统,使用其他系统 ...

  9. 跨域共享cookie和跨域共享session

    转载自:http://blog.csdn.net/ahhsxy/article/details/7356128 这里所说的跨域,是指跨二级域名,而且这些域名对应的应用都在同一个app上, 比如我有以下 ...

随机推荐

  1. C#开发微信门户及应用-使用地理位置扩展相关应用

    C#开发微信门户及应用-使用地理位置扩展相关应用 我们知道,地理位置信息可以用来做很多相关的应用,除了我们可以知道用户所在的位置,还可以关联出一些地理位置的应用,如天气,热映影片,附近景点,附近影院, ...

  2. 你所不知道的Html5那些事(一)

    文章简介:       关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后 ...

  3. Linux 网络相关命令

    1.修改ip,dns相关:sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.ifconfig 查找ip,mac地址 3.重启网络:sudo ser ...

  4. json转换(c#后台生成json的方法)

    此文转自:http://bbs.csdn.net/topics/380200497,为了方便自己记忆才以文章形式保存. using System; using System.Collections.G ...

  5. 网络编程之UDP协议

    UDP协议 UDP(User Datagram Protocol)也就是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范. 提 ...

  6. JQuery中的动画

    一.show()方法和hide()方法 这两种方法是jQuery动画的最基本方法.当为元素调用show方法时相当于将该元素的display样式改为block或者inline,同理,如果当元素调用hid ...

  7. Aspose.Words 总结

    生成答题卡 try { string tempPath = @"D:\moban\ttt.doc"; //Open document and create Documentbuil ...

  8. Redhat 6.5 x64 下载地址

    http://ftp.okhysing.is/ftp/redhat/6.5/isos/x86_64/

  9. KISSY学习笔记(更新中)

    序:身为一个JAVA开发工程师,前端代码我尽量是使用原生的JS来写的,或是使用一些JQ的开源组件(但是也只是使用,没有好好去研究过JQ这个框架).目前由于工作需要,必须要使用KISSY,打算借此机会, ...

  10. 学会Twitter Bootstrap不再难

    Twitter Bootstrap 3.0 是对其过去的重大改变,现在它更偏向于移动应用的框架,并且宣称是最好的web设计css框架之一,的确如此. 可能有人曾经使用过Twitter Bootstra ...