我有两个值用于名称,另一个用于密码,如果用户输入正确的组合,我想传递给另一个页面。如果用户知道我可以通过在查询字符串中包含值来重定向,如:
$cgi->redirect('http:someotherpage.com?username=$username&password=$password');
但是这是使用GET请求,是否有办法使用POST执行相同的操作,还是有另一种方法在Perl中重定向时传递值?我知道JSP有一个名为RequestDispatcher的方法,如果POST不可用,Perl中会出现类似的东西吗?
编辑:我之前发现了这个链接CGI Application Dispatch,但它有点技术性,所以我不知道这是否适合这项工作。
编辑:我使用CGI.pm
答案 0 :(得分:5)
执行HTTP重定向时,您只能提供新目标的URL。这意味着,无法为POST请求指定任何数据,因为它们位于URL之外。
据我所知,JSP中的RequestDispatcher不发送HTTP重定向响应,而是在JSP应用程序内部转发当前请求。这可以与您的CGI脚本只是将当前请求分派到同一服务器上的另一个脚本,而无需通过浏览器进行重定向。详细说明如何执行此操作取决于您使用的框架(例如,Dancer,Mojolicious,Catalyst ...或简单的CGI.pm)
答案 1 :(得分:1)
我需要重定向页面并包含POST数据。搜索解决方案只发现帖子说不可能做到。所以......挑战被接受了。
首先是为什么:我有一个用POST数据调用的perl cgi,并根据传递的数据提出一个表单(文本输入,复选框等)。用户进行更改/选择并提交表单。目标是一个cgi,它处理POST数据并对数据库执行必要的更新。然后我想立即重新显示第一个表单,因此可以看到更改的结果。虽然显示表单所需的POST数据很少,但我不愿意将其作为GET发送。
我的解决方案:
在处理POST数据后,cgi会生成另一个HTML页面,其中包括:
上面的页面加载几乎不明显(如果我不知道它发生了,我可能不会意识到它。)它就像一个魅力。