ホームページ >php教程 >php手册 >php中session跨域跨服务器的解决方案

php中session跨域跨服务器的解决方案

WBOY
WBOYオリジナル
2016-06-06 19:57:291302ブラウズ

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 php中session跨域跨服务器的解决方案:在网上查了一下,除了asp.net外,所有session的保留都必须借助session id。Session的保存位置众说风云,主要有:共享文件、数据库、memcache。因此主要的问题就

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

    php中session跨域跨服务器的解决方案:在网上查了一下,除了asp.net外,所有session的保留都必须借助session id。Session的保存位置众说风云,主要有:共享文件、数据库、memcache。因此主要的问题就集中在了session id的传递。

    Session id的传递主要有四个方法:

    1、通过cookie。

    2、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。

    3、手动通过url或隐藏表单传值。

    4、用文件或数据库方式传递,在通过其他key对应取值。

    以上的2和3其实使用的是同样的方法,只是途径不一样。

    通过以上的分析我们不难看出,通过cookie传递session id,将session存储于memcache服务器中是为一个比较合理的选择。当出现跨域的情况是,可以使用p3p跨域设置cookie。而当客户端禁用cookie的情况下,可以设置php.ini,通过url自动传递session id。

    以下我们以通行证为例,探讨其逻辑实现过程(视需求而定,而如果要保证接口的一致性,同时对其他服务器屏蔽session服务器,所有的登陆和获取session信息可以都通过登录服务器进行中转,不过这自然会有时间的延误和登录服务器宕机引起的全站瘫痪风险):

    包含服务和应用:登陆服务器,保存session的memcache服务器,应用服务器,公钥,密钥

    (1)、对于可信任服务器:

php中session跨域跨服务器的解决方案

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP正则替换preg次の記事:zendsafeguard 加密php