【问题标题】:Session variables lost in Popup window?会话变量在弹出窗口中丢失?
【发布时间】:2012-12-23 02:12:11
【问题描述】:

我有一个小书签,可以在外国网页上注入一个按钮。单击该按钮时,会出现一个包含我网站页面的弹出窗口。

我正在使用一个名为 Laravel 的 PHP 框架,使用 Chrome 浏览器进行测试

问题:当我在弹出窗口中检查用户是否从来自我网站的页面登录时,它总是返回用户未登录。

if( Auth::guest() ) {
    echo "Not logged in";
} else {
    echo "Logged in";
}

但是,当我直接访问同一页面时(不是在从另一个网站打开的弹出窗口中),我可以看到我已登录!

这里有什么问题,如何解决?


弹出 JS 代码

var popupOptions = 'status=no,resizable=yes,scrollbars=yes,personalbar=no,directories=no,location=no,toolbar=no,menubar=no,width=632,height=295,left=0,top=0';
window.open(' http://www.domain.com/controllername/add?url='+url, '_blank', popupOptions);

【问题讨论】:

  • 两件事,您没有在弹出页面中启动会话,或者为会话设置的 cookie 设置了不同的 cookie 路径,例如 /somefolder/ 会话将无法在该文件夹之外访问.检查您的 cookie 以查看已设置的内容。
  • 当我在弹出窗口中时,我看到 2 个具有相同名称 laravel_session 的 cookie... 用于 www.domain.comdomain.com。当我在弹出窗口外查看我的网站时,我只为domain.com 设置了 cookie...
  • 您可以随时在页面上抛出print_r($_SESSION) 并查看正在传递什么。 (可能与“referrer”字段有关)
  • 您不应该拥有两个同名的 cookie。看起来弹出窗口正在设置另一个具有相同名称但不同域的 cookie 覆盖应该用于 domain.com 的有效 cookie。你能发布弹出窗口的代码吗?
  • 有一瞬间我以为你说吃饼干。

标签: php jquery session cookies laravel


【解决方案1】:

您不应该拥有两个同名的 cookie。看起来弹出窗口正在设置另一个具有相同名称但不同域的 cookie 覆盖应该用于 domain.com 的有效 cookie

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2016-05-30
    • 2011-04-15
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多