0

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

我正在使用带有一些输入字段和提交按钮的 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,它仍然是同一页面。

4

1 回答 1

4

You can't cause the page to redirect that way. When you use XMLHttpRequest, you are sending the redirect header to the XMLHttpRequest client, which runs in the background. You will successfully redirect that client, but it will not affect the page on the screen.

If you want to redirect the actual browser page in response to an XMLHttpRequest session, you will need to write some JavaScript to capture the error condition and redirect the browser by updating the value of document.location.href.

If you're using an AJAX framework like jQuery, there is an error callback available in the ajax method which will get executed if your failed request returns an HTTP 403 or similar.

于 2013-09-09T15:07:49.537 回答