2013-04-20 34 views
0

我不知道我需要给这里多少信息..所以请耐心等待,而我试图解释这种情况。道歉,如果有太多的“填充”cgi.pm重定向不打印到目标_top

我有一个应用程序,其中我使用CGI :: Session安全。各种页面都通过jQuery,Perl,ajax调用等方式组合在一起。当我打印一个受密码保护的页面时,我检查CGI :: Session记录的登录状态,并在必要时重定向到主页以下perl:

print $cgi->redirect(-URL => $homepage); 

这可以正常工作。

但是......

有其中包含一个控制面板的密码保护的网页...这是本身通过jQuery和Ajax调用拉在一个DIV。我最近决定在用户​​点击“OK”时为这个数据的保存添加一些额外的安全措施......它调用另一个对perl(ControlPanelSave.pl)的ajax调用。在perl中,我决定为CGI :: Session登录标志添加相同的检查(用户可能在控制面板上坐的时间过长,当他们点击保存时,他们已经超时 - 或者可能是一个坏人发现了JavaScript)。因此,如果没有登录,perl会检查并重定向到主页。

我遇到的问题是,然后将主页打印在控制面板DIV内,就像它是一个框架。

我试图用我能想到的唯一的方法来解决这个问题:

print $cgi->redirect(-URL => $homepage, -target => '_top'); 

不使任何区别 - 它仍然打印控制面板DIV内的主页。

什么是重定向它的正确方法?

回答

0

您将不得不编辑JavaScript以识别它没有得到它期望的数据并在客户端上设置location

+0

你的意思是不要在perl中做重定向 - 而是向JS返回一个标志,并在那里做重定向? ...好吧,听起来不错...所以没有办法做我想从Perl中得到什么? – Upland 2013-04-20 09:28:39

+0

由于响应完全由JavaScript处理,因此无误。 – Quentin 2013-04-20 10:00:42