Perl CGI 在身份验证后重定向

Perl CGI redirect after authentication

本文关键字:重定向 身份验证 CGI Perl      更新时间:2023-09-26

我知道这是一个基本问题,有人问了好几次,但我无法理解。

我正在使用一个带有一些输入字段和提交按钮的 html 网页,当按下提交按钮时,帖子是通过 XMLHttpRequest 完成的,并调用 CGI 脚本。在 cgi 脚本中,使用服务器文件中的值检查身份验证。

问题是,如果身份验证是错误的,我想将浏览器重定向到 xmltest.shtml,因为我在 CGI 中写了这个:

 if($isauthenticated == 0)
   {
     print "Location: http://xmltest.shtml'n'n";
     }

但是当这个cgi被调用作为回报时,get是用xmltest.shtml页面调用的,但浏览器不会被重定向。

这意味着如果我在Firebug控制台中检查,我会看到xmltest.shtml的get请求,但浏览器页面不会重定向到xmltest.shtml,它仍然保留在同一页面。

您不能以这种方式重定向页面。当您使用 XMLHttpRequest 时,您将重定向标头发送到在后台运行的 XMLHttpRequest 客户端。您将成功重定向该客户端,但它不会影响屏幕上的页面。

如果要重定向实际的浏览器页面以响应 XMLHttpRequest 会话,则需要编写一些 JavaScript 来捕获错误条件并通过更新 document.location.href 的值来重定向浏览器。

如果您使用的是像 jQuery 这样的 AJAX 框架,则 ajax 方法中有一个错误回调,如果您的失败请求返回 HTTP 403 或类似内容,该回调将被执行。