【问题标题】:PHP: 2 Domain names, 1 session [duplicate]PHP:2个域名,1个会话[重复]
【发布时间】:2013-12-06 10:37:38
【问题描述】:

我有一个由 Heroku 托管的网站。 Heroku 为我的网站分配了一个域名someName.herokuapp.com。我有一个自定义域名www.someName.com,它指向someName.herokuapp.com。为了在我的配置文件中保持一致性,我有一个变量:

$ServerPath = "somename.herokuapp.com/";

这样,当我需要引用某个文件时,我可以直接转到 $ServerPath.$fileName

这就是问题所在。当用户从www.somename.com 登录时,会在服务器上创建一个会话。但是,如果用户在任何时候单击与$ServerPath 相关联的链接,则用户将被重定向到somename.herokuapp.com,并且在该域上会话似乎不存在并且用户已注销。

有没有办法让我的 $ServerPath 变量保持为 someName.herokuapp.com 并让会话在 www.someName.comsomeName.herokuapp.com 上都打开?

【问题讨论】:

  • 会话与 cookie 绑定,cookie 不会跨域。

标签: php session heroku


【解决方案1】:

很遗憾,这是(会话)cookie 的预期行为。您请求某个域,浏览器将发送该域的 cookie(即 www.somename.com)。现在您单击一个链接:somename.herokuapp.com。浏览器不会从 www.somename.com 发送任何 cookie

有两种可能的解决方案:

  1. 自动将 somename.herokuapp.com 重定向到 www.somename.com(反之亦然),因此所有内容始终位于同一个(子)域中。

  2. 通过 URL 创建会话传输。你可以使用session.use-trans-sid 或类似的东西。见http://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid。这种方法也有缺点。

【讨论】:

    【解决方案2】:

    您可以使用 .htaccess 重定向用户

    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*)$ http://www.someName.com [R=301,L]
    

    他将从http://www.someName.com以外的网址重定向

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2017-06-03
      • 1970-01-01
      • 2016-08-01
      相关资源
      最近更新 更多