我建立一个网站,它允许用户在我的网站指向CNAME记录来运行他们的“个人资料”,这可以让你自己的域名来加载我的网站上您的个人资料。
这是提高各种相关会议的问题。 我已经看到VIRB做到这一点。 我看不出有任何的是总部设在一个iFrame会话的信息......但有一个iFrame出现在页面上。
我能得到的东西领域的工作,我只是失去了会话数据...任何想法?
(下面是一个例子--links到Virb-- http://www.agentspider.com/ )
我建立一个网站,它允许用户在我的网站指向CNAME记录来运行他们的“个人资料”,这可以让你自己的域名来加载我的网站上您的个人资料。
这是提高各种相关会议的问题。 我已经看到VIRB做到这一点。 我看不出有任何的是总部设在一个iFrame会话的信息......但有一个iFrame出现在页面上。
我能得到的东西领域的工作,我只是失去了会话数据...任何想法?
(下面是一个例子--links到Virb-- http://www.agentspider.com/ )
你不能设置Cookie默认跨域。 我相信,你可以设置一个P3P文件(S)来启用它。 http://p3ptoolbox.org/guide/section4.shtml#IVd我没有这个做我自己,所以我不知道浏览器的多少实现它,或者如果它甚至还可以这样。
VIRB看起来它只是使用JavaScript。 它有一个AJAX库,这使得JSON-P ,如果没有会话cookie设置请求VIRB服务器。 (火狐的第一负荷,你可以看到这个萤火虫)JSON响应只是让网页知道,如果用户登录与否,并更新页面的需要,以反映用户状态的部分。
所以,发生了什么是网页嵌入一些JS从virb.com。 由于域名是virb.com它的cookie设置为virb.com被发送到服务器。 然后,服务器与cookie到外部站点的结果进行响应。
在VIRB的情况下,这将不无JS正常工作,我认为是一个很好的选择。 但是,你可以做HTTP重定向相同。
如果HTTP主机不是主域(example.com):
if (!$_COOKIE['sessionid'] && $_SERVER['HTTP_HOST'] != 'example.com') {
// redirect to your main site
header('Location: http://example.com');
}
在主站点设置cookie,并发送用户返回到传递会话ID的位置外域(domain.com)。
header('Location: http://domain.com.com?sessid='.urlencode($_COOKIE['sessionid']));
最后一点是重新回到你的,现在你有相同的会话持续的页面。
setCookie(...); // sessid in $_GET['sessid']
header('Location: http://domain.com/');
注意,实际上您可以发送您目前所回example.com在第一步的页面,这样以后可以重定向到它。
因为你只是使用头文件(你并不需要输出的内容),并在大多数情况下HTTP / 1.1,所以你是一样的TCP套接字我认为这是非常有效的,将被更多的支持,则JavaScript的选项上。
编辑:不要忘记设置Cookie,当你回到外部域。
最后一步是可选的,但它使sessid从一个URL之中。 这更是一个安全问题,然后保持它在HTTP头。
唯一的办法是到会话ID-S添加到URL-S从一个领域到另一个(或添加会话ID的iframe src网址),然后编写你的会话存储后端处理这个问题。
当然,你需要,这种做法带来一起考虑所有的安全问题。
没有更多的简单:
1)创建domain1.com/client.html与源:
<script type="text/javascript" src="domain2.com/server_set_cookie.php"></script
> 2)创建domain2.com/server_set_cookie.php用PHP源:
header("p3p: CP=ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV");
setcookie($_REQUEST['cookie_name'], 'cookie_name', time()+3600);
http://smartcoding.wordpress.com/2009/07/12/setcookie-cross-domain-cookie-write/
不知道我理解你的问题。 是不是像其他域调用像www.userprofiles.com/profile.php?userid=1和显示结果? 在这种情况下profile.php将产生时,它被称为一个新的会话ID。 您需要使用您的网站和变化profile.php喜欢的东西来设置每个外部域的不同ID:
如果(isset($ _ REQUEST [ 'SID']))的session_id($ _ REQUEST [ 'SID']);
在session_start();
并呼吁这样www.userprofiles.com/profile.php?userid=1&sid=somesessionid1234脚本