window.location.assign转到错误的URL

时间:2018-04-15 20:07:26

标签: javascript jquery

我有这个代码 - index.php显示登录屏幕,editor.php是网站管理员。

现在,这个管理员还有注销链接,它应该像这样工作:

  • 点击链接
  • 调用js logout()
  • 将通过ajax调用logout.php,这将通过cookie验证信息
  • 成功处理程序重定向到登录屏幕(index.php)。我也可以重定向到检查身份验证信息的同一页面,也会重定向到登录界面。

但实际上它的工作原理如下:

  • 前3个相同
  • 成功处理程序重定向到同一页面(editor.php - Chrome控制台显示"导航到... editor.php")虽然执行window.location.assign(' index.php&#39 )。 editor.php不知道用户未经过身份验证,仍然显示管理页面。当我刷新页面时,editor.php正确地重定向到index.php

我知道处理注销程序有点奇怪,请不要批评设计:)我不想知道正确的方法,但要理解:

  1. 为什么浏览器决定location.assign(' index.php')应该 实际上是' editor.php' (重定向缓存?登录后有重定向index.php - > editor.php)。我也试过了完整的网址
  2. 为什么editor.php实际上没有重装自己(缓存?)
  3. HTML:

    <a href="#" onclick="logout(); return false;">logout</a>
    

    JS:

    function logout() {
        $.ajax({
            type : "POST",
            url : "logout.php",
            // simplified success handler
            success : function(msg) {
                // will eventually redirect to right place
                window.location.assign('index.php');
                //window.location.reload(); // NOTE this instead of assign works correctly
            }
        });
    }
    

    请注意,如果我将location.assign替换为location.reload,则表明其行为正确。

0 个答案:

没有答案