【问题标题】:TYPO3: Howto share session / cookies between domains (one for each language )?TYPO3:如何在域之间共享会话/cookie(每种语言一个)?
【发布时间】:2013-05-02 18:40:38
【问题描述】:

我想知道是否有办法告诉 TYPO3 在不同域之间共享会话/cookie?

我们在多语言/多域网站上编写了 Extbase 扩展。 我们将搜索表单中的搜索词存储在用户会话中。如果用户切换页面语言,他应该得到与以前相同的结果 - 无需重新填写搜索表单。

一种方法是告诉浏览器同时存储多个 cookie - 每个域/语言一个。如何使用 TYPO3 / Extbase 实现这一点?

【问题讨论】:

    标签: session-cookies typo3 extbase


    【解决方案1】:

    默认情况下,无法为不同的域设置 cookie - 无论是否使用 TYPO3。这是在每个浏览器中实施的安全措施(或者您希望我在您访问我的网站时从 yourbank.com 设置/读取您的 cookie?;-))

    您必须创建一些帮助脚本来为您执行此操作。一种方法可能是:

    • example.com 已加载
    • 此页面包含一个指向 example.org 上 PHP 脚本(或 TYPO3 站点,例如使用 eID)的 iframe,其中 GET 参数存储为会话 ID
    • 从 example.org 加载的脚本读取 GET 参数并使用该会话 ID(或您要传输的任何参数)设置一个 cookie。
    • 之后浏览 example.org 时也可以使用 cookie

    我从未尝试过,但我很确定它可以与 PHP 一起使用。也许它甚至可以使用纯 JavaScript,但我不太确定。在每种情况下,请考虑使用说明的脚本会遇到哪些安全漏洞。对参数有疑问(或需要令牌)!

    【讨论】:

    • 好点:这是一个安全问题 - 无法为不同的域添加两个 cookie!
    • 我在多域网站(每个域一种语言)的 felogins 上遇到了这个问题。 @StephenKing,您的答案是关于设置 cookie。这很清楚。但是告诉 TYPO3(或任何其他应用程序)接受来自另一个域的 cookie 怎么样?比如,告诉 TYPO3 接受来自 domain-a.com 和 domain-b.com 的 cookie 以进行 fe 登录。我在看[SYS][cookieDomain] - 但还没有运气。
    • 这在设计上是不可能的。您不能要求用户的 cookie,例如facebook.com。这是当时发明 cookie 时的设计决定(我认为这样很好 ;-))
    • 我明白了。因此,唯一的解决方法似乎是设置其他 cookie 的 AJAX/iFrame 解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 2013-01-19
    • 2021-12-26
    • 2013-02-15
    • 2021-03-23
    • 2016-12-11
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多