2013-05-02 61 views
1

我想知道是否有办法告诉TYPO3在不同域之间共享会话/ cookie?TYPO3:如何在域之间共享会话/ cookie(每种语言一个)?

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

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

回答

1

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

您必须创建一些帮助程序脚本为你。一种方法可以是:

  • example.com加载
  • 此页包含有GET参数将正在被会话ID上example.org的iframe PHP脚本(或TYPO3网站,例如用EID)
  • 从example.org加载的脚本读取GET参数,并使用该会话标识(或任何您想传输的参数)设置一个cookie。
  • 之后将example.org浏览

我从来没有尝试过这种当饼干也可以,但我敢肯定它会用PHP工作。也许甚至有可能使用纯JavaScript,但我不太确定。在任何情况下,请考虑使用解释脚本得到的安全漏洞。怀疑签署参数(或需要令牌)!

+0

好点:这是一个安全问题 - 无法为不同的域添加两个Cookie! – rantanplan 2013-05-03 13:14:47

+0

我有一个多域网站(每个域的语言)felogins此问题。 @StephenKing,你的答案是关于*设置* cookies。这很清楚。但是告诉TYPO3(或任何其他应用程序)从另一个域接受* cookie是什么情况?就像告诉TYPO3接受来自domain-a.com的cookies和用于登录的domain-b.com一样。我正在查看'[SYS] [cookieDomain]' - 但还没有运气。 – Urs 2014-09-05 14:27:10

+1

这是不可能的设计。您不能要求用户的Cookie用于'facebook.com'。这是当时发明饼干时的设计决定(我认为这是好的;-)) – StephenKing 2014-09-05 14:33:29