【问题标题】:Page reloads but doesn't hit server页面重新加载但不访问服务器
【发布时间】:2013-05-30 12:45:29
【问题描述】:

我有以下 Ajax 登录脚本。 index.php 将设置一个会话,然后在用户名和密码签出时返回类似{"status":true,"msgs":[],"url":"\/demo\/administrator\/index.php"} 的内容。然后页面应该重新加载,PHP 脚本将检查会话是否已设置,如果已设置,将显示相应的页面。

“有时”在 Windows 7 上运行 FireFox 21.0 时,页面似乎重新加载,但随后错误地重新显示登录页面。当我说“似乎要重新加载”时,在使用 FireBug 时,我看到了服务器的 POST,然后我看到了 console.log “重新加载页面”一小段时间,然后显示了登录页面。如果我随后手动重新加载页面,会话将签出,并返回正确的页面。

为了排除故障,我在我的 PHP 脚本中添加了一些 syslog(LOG_INFO,"got here!");,我发现它从未被第二次访问过,因此我相信服务器在重新加载后没有受到攻击。我还检查了 Apache 访问日志,我相信它只看到了第一个 POST。

谁能告诉我发生了什么,以及如何补救?谢谢

$.post('index.php',{task:'logon',username:username,password:password},
    function (data)
    {
        if(data.status==true){
            console.log('reload page');
            //window.location.href = data.url;
            window.location.href = window.location.href;
            //window.location.reload();
        }
        else {msgs.html("<ul>"+mkList(data.msgs)+"</ul>");}
    },'json'
);

【问题讨论】:

  • 如果将window.location.href = window.location.href 更改为window.location.reload() 会发生什么?我不确定它是否有区别,但也许浏览器实际上并没有发送请求,因为 href 值没有改变?
  • @Brian。一样的效果。我什至返回网址的唯一原因是我可以测试window.location.href = data.url;
  • 它是否出于某种原因缓存?您从 POST 请求中得到什么状态?另外,也许试试window.location.reload(true) 看看是否有什么不同。
  • @Brian。必须是缓存。 window.location.reload(true) 似乎有效!你知道为什么吗?
  • 如果你没有明确告诉浏览器不要在标题中缓存页面。有些浏览器仍然会缓存动态页面,因为你发送的参数是相同的。你可以做的是追加url 的时间戳,将强制浏览器再次从服务器获取内容

标签: php javascript apache firefox caching


【解决方案1】:

这个答案确实是由 Brian Lacy 和 user1600124 提供的,但他们只留下了 cmets 并没有发布这个答案。所以,如果你认为这是一个好的答案,请给他们的 cmets 投票。

使用window.location.reload(true)向服务器提交数据

如果你没有明确告诉浏览器不要在 headers 中缓存页面。有些浏览器仍然会缓存动态页面,因为你发送的参数是相同的。

作为替代解决方案,您可以将时间戳附加到 url,这将强制浏览器再次从服务器获取内容。

【讨论】:

    【解决方案2】:

    为您的页面设置 pragma "no-cache" 标头也会有所帮助。

    http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Avoiding_caching

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 2021-07-19
      • 2013-03-20
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多