我想设置以下内容:
auth.example.com
sub1.example.com
sub2.example.com
Run Code Online (Sandbox Code Playgroud)
如果用户访问sub1.domain.com或sub2.domain.com且他们未登录,则会将其推送到auth.domain.com并登录.sub1.domain.com和sub2.domain.com是两个单独的应用程序但使用相同的凭据.
我尝试在php.ini中设置以下内容:
session.cookie_domain = ".example.com"
Run Code Online (Sandbox Code Playgroud)
但它似乎没有将信息从一个域传递到另一个域.
[编辑]
我尝试了以下方法:
sub1.domain.com/test.php
session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Regsitered'] = 1;
echo '<a href="http://auth.example.com/test.php">Change Sites</a>'
Run Code Online (Sandbox Code Playgroud)
auth.domain.com/test.php
session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Checked'] = 1;
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)
会话ID完全相同但是当我转出$ _SESSION变量时,它不显示两个键,只是我在每个域下设置的任何键.
[编辑2]
我更新了[编辑]
我为所有用户数据使用php会话(不是cookie,会话ID cookie除外),当用户访问他们的个人资料user.mydomain.com时,他们会立即"退出",直到删除子域.
有没有办法接受来自所有域的会话,只要它的*.mydomain.com
我简直无法相信这很难确定.
即使已阅读RFC,我也不清楚subdomain.example.com上的服务器是否可以设置可由example.com读取的cookie.
subdomain.example.com可以设置其Domain属性为.example.com的cookie.RFC 2965似乎明确声明这样的cookie不会被发送到example.com,但是同样地说,如果你设置Domain = example.com,前面有一个点,就像你说的那样.example.com.总而言之,这似乎说如果example.com返回使用Domain = example.com设置一个cookie,它就不会得到那个cookie!这不可能是正确的.
任何人都可以澄清规则到底是什么吗?
我应该如何为这些功能添加域支持?我希望实现.example.com被声明为域,以便可以在example.com的所有子域中读取cookie.在目前的形式中,由于未设置域,因此只能从www.example.com读取
可以在同一顶级域名的两个站点之间共享cookie吗?说www.example.com
和secure.example.com
?我们正在研究为非安全内容实现缓存,并需要将安全内容隔离到另一个域.cookie需要什么参数?我正在使用asp.net
在一个应用程序中,我使用长轮询实现了一个javascript聊天.由于每个域只允许一个Ajax请求,我想将轮询请求移动到子域.
所以我有两个域:
dev.site.com
poll.dev.site.com
Run Code Online (Sandbox Code Playgroud)
在我的config.yml
我输入以下内容:
framework:
session:
domain: .dev.site.com
cookie_domain: .dev.site.com
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试通过Ajax在子域上进行轮询,Symfony不会让我登录.
关于如何在子域上保持会话的任何想法?我正在使用FOSUserBundle
我在一个使用子域、会话和 Ajax 的 PHP 项目中工作。但不幸的是我不能让它工作!我会试着解释:
让我们假设我在这个域:app.mysite.com/index.php
在这个域中,我有一个表单可以向mysite.com/functions/execute.php执行 Ajax 请求(没有任何子域)
在execute.php的第一行,我有一个require_once,其中包含一个helper.php文件。在这个文件中,我放了:
ini_set('session.cookie_domain', '.mysite.com');
session_set_cookie_params(0, '/', '.mysite.com');
session_start();
Run Code Online (Sandbox Code Playgroud)
列出的所有 PHP 文件还包括 helper.php。
例如,如果我运行:
echo $_SESSION["myValue"];
Run Code Online (Sandbox Code Playgroud)
在app.mysite.com/index.php或任何其他子域,如auth.mysite.com,我会得到值:"test"。但是如果我在execute.php运行相同的代码,并通过 Ajax 返回值,我将得到未定义的索引!
我究竟做错了什么?
session ×4
cookies ×3
php ×3
subdomain ×3
apache ×2
ajax ×1
asp.net ×1
cross-domain ×1
http ×1
javascript ×1
setcookie ×1
symfony-2.1 ×1