php跨域名同步登陆,网站会员跨域同步登录解决方法概略

网站会员跨域同步登录解决方法概略

问题描述:两个或多个网站使用相同的会员资料,实现多个网站的同步登录。

网上看到一篇关于搜狐解决这个问题的方法,登录新浪通行证会同时登录17173.com、chinaren.com、focus.cn、sohu.com等多个网站。由于passport.sohu.com的登录界面使用了iframe隐藏提交。所以页面没有看到刷新。服务器看到成功登录的Cookie后。在服务器端计算出一个加密后的17173.com的登录Url,并Redirect到这个Url。估计这个方案是由于搜狐的数据库结构决定的,网站数量比较多的话,服务器压力会比较大。

另外介绍的一种方法,属于轻量级的解决方案,登录成功的同时在登录网页中使用JS调用,把加密后的参数传过去,这个不需要页面刷新。在Firefox下可以直接实现跨域的COOKIE读写,但IE和Safari浏览器会因为安全问题,不被信任而拒绝读写。如需要写入需要在页面头部加入下面这个声明,Ucenter使用就是这种方法实现同步登录。

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

在实际测试当中,发现当在IE浏览器中写入的COOKIE值非空时,可以正常读写;但是当设置为空的时候会发生无法写入的情况。我测试的DISCUZ 7.2版以及7.0版都存在这个问题,跨域在IE中无法实现同步登录,后来发现是由于无法跨域清空COOKIE造成的。于是把原本跨域清空的地方,设置为写入0这个值,成功实现同步登录。

在DISCUZ 7 实现同步登录使用的是api目录中的uc.php文件。同步登录使用的是synlogin函数,同步登出使用的是synlogout函数。下面是同步登录函数的修改。

synlogin函数修改前的代码

26abc48ff82d90942b083071b0021cf1.png

?

synlogin函数修改后的代码

abe76fa34a4545460aedb4602a4e170a.png

?

同步登出修改方式类似,写入非空的值即可。使用IFRAME调用跨域网页时候,COOKIE也存在这个问题。不能写入空值具体原因不详,但修改后在IE下成功实现跨域同步登录和登出。若阁下有好的见解可以留言讨论。

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: 网站会员跨域同步登录解决方法概略 http://www.chhua.com/web-note436

相关笔记

更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解决文件下载时的跨域问题,可以在服务器端设置跨域资源共享(CORS)头部。具体步骤如下: 1. 在服务器端的 PHP 脚本中,设置响应头部,允许指定的域跨域访问该资源。例如,以下代码表示允许来自 example.com 域的请求跨域访问该资源: ```php header('Access-Control-Allow-Origin: example.com'); ``` 2. 如果需要允许多个域跨域访问该资源,可以使用通配符 `*`,例如: ```php header('Access-Control-Allow-Origin: *'); ``` 但是使用通配符可能会存在安全风险,因为它允许任何域都可以跨域访问该资源,所以建议仅允许指定的域访问。 3. 如果需要允许跨域请求发送自定义请求头部,可以使用 `Access-Control-Allow-Headers` 字段,例如: ```php header('Access-Control-Allow-Headers: Authorization, X-Requested-With'); ``` 上述代码表示允许跨域请求发送 `Authorization` 和 `X-Requested-With` 两个自定义请求头部。 4. 如果需要允许跨域请求发送不同的 HTTP 方法,可以使用 `Access-Control-Allow-Methods` 字段,例如: ```php header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); ``` 上述代码表示允许跨域请求发送 `GET`、`POST`、`PUT` 和 `DELETE` 四种 HTTP 方法。 需要注意的是,以上代码需要放在文件下载的 PHP 脚本的开头部分,确保在下载文件之前设置响应头部。此外,还需要确保 PHP 脚本没有其他输出,否则会导致设置响应头部失败。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值