跨域生成Cookie

来源:互联网 发布:华为软件 编辑:程序博客网 时间:2024/05/17 07:11

最近在做通行证功能,即单点登陆!即用户从www.a.com登陆后,www.b.com自动登陆、注销!

实现该功能有二种途径:

1.基于数据库(在此不讨论)

2.基于Cookie

由于某种原因需要使用Cookie来实现信息同步,基于安全性考虑,默认情况下浏览器不允许访问域外的资源(Cookie等),所以不能以跨域的形式来直接访问另外一个域的cookie。有没有可能使2个域共享一个cookie文件呢?不可能!那么有没有变通的办法呢?有的,也就是在浏览a域页面的同时,隐藏去执行一下b域的某个页面,而b域的某个页面所做的动作为生成cookie,这样不就把cookie保存至b域中了吗?

 

一、环境设置

      1.打开X:/WINDOWS/system32/drivers/etc(X 为系统安装路径)

      2.用记事本打开hosts,在

      127.0.0.1       localhost下添写二行记录

      192.168.18.104     www.a.com.cn
      192.168.18.104     www.b.com.cn

二、代码编写

      工作流程

      a域通过script来访问b域的接口文件,b域接口文件通过接收a域传入的参数来实现对b域cookie的写操作

      1.编写b域的接口文件,命名为b_setcookie.php

       

     2.创建a域下的文件test.php,并使用脚本来调用b域的b_setcookie.php

      

 

      3.测试

        在FireFox中输入www.a.com/test.php,就会发现有b域的cookie文件生成了

        在FireFox下使用工具->选项->隐私->使用自定义历史记录设置->显示Cookie

这里有一个问题,如果用IE等浏览器执行www.a.com/test.php时,就不能生成b域的Cookie,这时我们需要在b_setcookie.php中加一句话

原创粉丝点击