我知道这是一个基本问题,有几次被问过,但我无法理解。
我正在使用带有一些输入字段的html网页,并在按下提交按钮时提交按钮,通过XMLHttpRequest完成帖子并调用CGI脚本。在cgi脚本中,使用服务器文件中的值检查身份验证。
问题是,如果验证是假的,我想将浏览器重定向到xmltest.shtml,这是我在CGI中写的:
if($isauthenticated == 0)
{
print "Location: http://xmltest.shtml\n\n";
}
但是当这个cgi被调用时,使用xmltest.shtml页面调用get,但浏览器没有被重定向。
这意味着如果我登录Firebug控制台,我会看到xmltest.shtml的get请求,但浏览器页面没有重定向到xmltest.shtml,它仍然保留在同一页面。
答案 0 :(得分:4)
您无法使页面重定向。当您使用XMLHttpRequest时,您将重定向标头发送到在后台运行的XMLHttpRequest客户端。您将成功重定向该客户端,但不会影响屏幕上的页面。
如果要重定向实际的浏览器页面以响应XMLHttpRequest会话,则需要编写一些JavaScript来捕获错误情况,并通过更新document.location.href
的值来重定向浏览器。
如果您正在使用像jQuery这样的AJAX框架,ajax
方法中有一个error callback,如果您的失败请求返回HTTP 403或类似内容,它将被执行。