我在www.example.com上有一个webapp,在api.example.com上有一个API.
webapp对API进行ajax调用.
在某个地方,我需要在api.example.com上放置一个cookie来保持会话跟踪.
为了跟踪我的问题,我在webapp和api的两个子域上设置了测试cookie.webapp在.exemple.com上设置了一个cookie,api在.exemple.com上设置了一个,在api.exemple.com上设置了另一个.Cookies仅使用Domain = .exemple.com设置.没有路径,没有HTTPOnly.
注意:最后我在api.exemple.com上只需要一个.但这些是用于测试的.
使用我的浏览器(Firefox 16)直接查询工作正常.查询api:设置并发送两个cookie.在www上查询:设置了cookie,并且也发送了来自api的两个.(当然我在api之后查询www).
现在,我清理浏览器cookie并仅查询www.在www上查询:工作正常,与以前一样.关于api的子查询,来自www的ajax请求:不发送cookie.Set-Cookies什么都不做.使用Firebug我在响应中看到了cookie.但是在后续请求或页面信息中没有它们的痕迹.
我事件试图在Firefox上启用cookie登录.绝对没有来自api的cookie的痕迹,甚至没有拒绝通知.
最后我只需要一种在api上存储一个cookie的方法.为此,我相当开放:)
信息:这两个服务器是NodeJS.我试图在客户端(document.cookies)设置服务器端的cookie(Set-Cookie标头),手动使用firebug.
其他帖子我已经检查过没有解决方案(以及其他许多我不记得的):
我正在构建一个网站,允许用户在我的网站上指向CNAME记录来运行他们的"个人资料",这允许您的OWN域名在我的网站上加载您的个人资料.
这引发了与会话相关的各种问题.我见过virb做到了.我没有在iFrame中看到任何基于会话的信息...但页面上有一个iFrame.
我可以让域名的东西工作,我只是丢失会话数据......任何想法?
(这是一个例子 - 与Virb的链接 - http://www.agentspider.com/)
你好,这里有点麻烦.我有domain.co.uk设置会话.当我点击domain.co.uk上的链接转到sub.domain.co.uk时,会话未被阅读.
我已将session.cookie_domain更改为.domain.co.uk,但仍然无效.还有什么需要改变吗?
问候,我.
我在一个使用子域、会话和 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 返回值,我将得到未定义的索引!
我究竟做错了什么?
我正在尝试在多个子域上使用会话数据.EJ:
当我尝试将来自www.mywebsite.com的会话数据用于任何子域时,无法访问所有会话信息.
由于我是一名php初学者,请愚蠢地回复你的回复,以便我理解它.
这是一个例子:
档案1:
<?php
//FILE 1: www.mywebsite/index.php
session_start();
$_SESSION['status'] = "ON";
header( 'Location: http://sub.mywebsite/' );
?>
Run Code Online (Sandbox Code Playgroud)
文件2:
<?php
//FILE 2: sub.mywebsite/index.php
session_start();
echo "Your session status is: ";
echo $_SESSION['status'];
?>
Run Code Online (Sandbox Code Playgroud) 我有一台服务器,我使用dokuwiki来托管主页和维基.服务器可用www.domain.com,维基可用wiki.domain.com.在内部,两个子域都是从不同的目录提供的.
但是,这意味着,每个想要注册的人都必须注册这两个域,并为两个子域管理一组重复的用户帐户.
我想要的是拥有一个系统,任何人都可以在这两个页面上注册,只需登录任何域并获得访问权限.对于两个域,仍应单独管理ACL,因为我可能多次使用命名空间名称.
我查看了dokuwiki auth插件的列表,但是我无法找到任何有用的用于此目的.另一个想法是在两个安装中对auth数据目录进行软链接或硬链接.但是,这仍然意味着用户必须多次登录.此外,我不确定我的主机是否真的允许这样的目录链接,或者这可能会搞砸这两个安装.
有没有其他方法来创建这样的设置?
在我的网站上,我想拥有几个子域。为给定子域创建上下文的文件存储在相应的子目录中。
有时我需要链接到不属于该子域的文件。
例如,在我的“ subdomain1.mysite.org”上,我具有“ www.mysite.org/login.php”的链接。“ login.php”存储在目录中,该目录包含与子域相对应的所有子目录。
如果我以这种方式创建指向“ www.mysite.org/login.php”的链接:href='../login.php',它将无法正常工作。因为浏览器尝试访问“ subdomain1.mysite.org/../login.php”。为了解决这个问题,我以这种方式建立了链接:href='http://www.mysite.org/login.php'但是我认为这种方式无法将我的会话变量传递给新页面(是这样吗?)。
因此,我的问题是我找不到将会话变量传递到位于父目录中的页面(或传递到另一个域上的页面)的方法。有人知道如何解决这个问题吗?
添加
按照建议,我很疲倦地使用它session_set_cookie_params来解决问题。但是我仍然无法获得预期的结果。更详细地讲,我执行以下操作:
我在使用以下代码index.php生成内容的文件中subdomain1.mysite.org:
session_set_cookie_params(24*60*60,'/','.mysite.org');
session_start();
$_SESSION['page'] = $PHP_SELF;
Run Code Online (Sandbox Code Playgroud)
后来,在同一个文件中,我链接到了我的页面之一(我认为问题可能出在这里)。我通过以下方式创建链接:
href='http://www.mysite.org/login.php'
Run Code Online (Sandbox Code Playgroud)
在login.php文件中,我有以下代码:
session_set_cookie_params(24*60*60,'/','.mysite.org');
session_start();
print "a".$_SESSION['page']."b";
Run Code Online (Sandbox Code Playgroud)
结果,“ a”和“ b”之间没有任何关系。因此,我仍然无法将会话变量从一页传递到另一页。有人知道我在做什么错吗?
添加2
我必须说,如果添加以下行,我的问题就解决了:
session_name("some_name");
之前
session_set_cookie_params。