教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 网站编程 > PHP教程 >

php相互读取跨域读取不同域名的cookie

时间:2012-07-26 12:25来源:未知 作者:ken 点击:

要做通行证,这东西是最麻烦的,又要效率,又要方便还要考虑安全.如果遇到多域名,更是可怕.

现在就遇到了.经过折腾,总算解决了ajax 的跨域和跨域cookie问题,记录如下,方便以后使用

类如
www.eduyo.com
www.shumaquan.com
使用同一个writecookie.php 来写cookie
用的jquery的框架来做. jquery的$.getJson自带着可以跨域ajax的jsonp方式,为啥叫jsonp..你问老外吧.

其原理就是传递参数时,增加一个callback句柄,导致产生一个类似script src属性的写法,然后调用回调函数,实现了ajax的跨域访问.其具体方式网上也有一些例子.

$.getJSON("http://eduyo.com?format=json&jsoncallback=?", function(data){
  $.each(data.items, function(i,item){
    $("<img/>").attr("src", item.media.m).appendTo("#images");
    if ( i == 3 ) return false;
  });
});

 

这是手册自带的跨域访问flickr的例子,注意url最后的callback=? 这个就是自动生成一个回调函数的参数. 

在服务端脚本里,php为例,应该返回callback的值以实现回调.

<?php
 $callback = $_GET["callback"];
 echo $callback."(".json_encode(array).")";
?>

因为是异步,所以需要返回$callback否则.在firebug里会看到错误提示.
这样就可以实现ajax的跨域. 但是还有写cookie的问题.因为ie的安全验证问题,导致跨域是不能够在另一个域名下写cookie
而firefox就没有这个问题了.查了查原来是下面的方式
 

 

<?php 
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); 

setcookie("test", $_GET['id'], time()+3600, "/", ".a.com"); 
?>

以上代码注意是要p3p是要在写入cookie的页上的

这个header p3p是一个头的安全验证的内容.具体原因可以查老外的文章.我直接就使用了.header出来,就可以跨域写cookie了...

(责任编辑:ken)
TAG标签: php 跨域 Cookie
顶一下
(0)
0%
踩一下
(3)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容