我CGI::Session
在我的 Perl Web 应用程序中使用会话管理。我可以使用file
会话驱动程序创建会话,但无法获取现有会话并且无法访问会话的存储参数。
我正在尝试获取现有会话,但它正在创建新会话,并且查询字符串$CGISESSID
都相同,但$session
在这里我得到的是不同的,它是一个全新的会话,所以我无法从会话中获取存储的参数。请帮我解决这个问题。
谢谢,克里希纳
我CGI::Session
在我的 Perl Web 应用程序中使用会话管理。我可以使用file
会话驱动程序创建会话,但无法获取现有会话并且无法访问会话的存储参数。
我正在尝试获取现有会话,但它正在创建新会话,并且查询字符串$CGISESSID
都相同,但$session
在这里我得到的是不同的,它是一个全新的会话,所以我无法从会话中获取存储的参数。请帮我解决这个问题。
谢谢,克里希纳
正如其他人指出的那样,如果您在每个请求中都获得新会话,则您没有在 cookie 中发送会话 ID。如果您使用 CGI.pm 来处理您的 HTTP 标头,请执行以下操作:
print $q->header(-cookie => $session->cookie);
如果您在应用程序框架中使用 CGI::Application,请在 setup() 或 cgiapp_init() 中执行此操作(如果有的话)
$self->header_add(-cookie => $session->cookie);
或者,您可以使用 CGI::Session 自己的 header(),默认情况下使用'CGI::header 方法:
print $session->header()
建议使用 CGI::Session 的实用程序(例如 cookie 和/或标头),因为它们尊重 cookie 的过期设置。
您在打印 html 内容之前是否在打印 $session->header() ?