1.设置cookie的使用范围(域名+路径)
cookie.setDomain(".baidu.com");//表示在baidu下的二级域名之间都可以共享
cookie.setPath("/"); //设置成根目录
如果是测试用的localhost则不用设置domain,只要设置path就可以实现系统间共享
2.不知道有人用过把cookie存入redis可以实现cookie跨域共享。
3.应该还用一个方法可以实现,使用jsonp来通过ajax实现,而且这种方法还比较流行
JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。分别是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式。
在开发中,开发人员应该都知道js在操作cookie时是不允许跨域处理的,那么怎么办呢?利用Jquery之AJAX 跨域请求 - 其中有一个方法 JSONP 可以实现跨域请求。
JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。分别是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式。
什么是jsonp格式呢? API原文是:
如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。
先跟着飘易看看一个测试的案例:
前端HTML代码是( 先引用jquery库 ):
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
$.ajax({
type : "get",
async:false,
url : "http://www.piaoyi.org/json.php",
dataType : "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
success : function(json){
document.writeln(json.name+"<br>");
document.writeln(json.age+"<br>");
},
error:function(){
alert('fail');
}
});
});
</script>
<script type="text/javascript">
jQuery(document).ready(function(){
$.ajax({
type : "get",
async:false,
url : "http://www.piaoyi.org/json.php",
dataType : "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
success : function(json){
document.writeln(json.name+"<br>");
document.writeln(json.age+"<br>");
},
error:function(){
alert('fail');
}
});
});
</script>
后台服务器端代码,拿PHP举例:
//服务端返回JSON数据
$arr=array('name'=>'Peter Piaoyi','age'=>25,'city'=>'wuxi');
$result=json_encode($arr);
//动态执行回调函数
$callback=$_GET['callback'];
if($callback!="") echo $callback."($result)";
else echo "$result";
$arr=array('name'=>'Peter Piaoyi','age'=>25,'city'=>'wuxi');
$result=json_encode($arr);
//动态执行回调函数
$callback=$_GET['callback'];
if($callback!="") echo $callback."($result)";
else echo "$result";
执行上述前端页面后,通过抓包,我们可以看到发送的地址: