【问题标题】:Removing query params causing issue on page refresh删除导致页面刷新问题的查询参数
【发布时间】:2016-03-10 08:01:42
【问题描述】:

我有一个附有查询字符串的 URL。页面加载后,我正在使用

删除查询参数

history.replaceState("","",location.href.substring(0,location.href.indexOf("?")))

但是当用户点击刷新按钮时,它会从我的应用程序中显示错误屏幕,因为 URL 中没有预期的查询参数。我可以在那里使用发布操作,但我想避免使用页面刷新正常工作的查询参数。有什么解决办法吗?

【问题讨论】:

  • 考虑缓存每个会话和 url 的最后一个查询,并在没有查询参数的情况下请求页面时执行它。这不是一个好的做法,因为它违反了休息原则(无状态)并使此类链接无法共享,但会解决您的问题。

标签: javascript html5-history


【解决方案1】:

如果您使用查询参数然后将其删除,则用户点击刷新并且出现错误说它需要查询参数,那么您的代码(和逻辑)就缺失了。

如果您想在页面初始加载后避免查询参数,我的建议是将参数保存在 cookie 甚至会话中(如果有代码隐藏)。那么如果用户在没有查询参数的情况下刷新,检查cookie是否存在,如果cookie存在,则正常显示页面,如果不存在,则提示他们没有通过正确的渠道访问该URL。

但是,就像我提到的,我认为你的逻辑是有缺陷的,因为如果用户想将你的 URL 分享给外界,而你删除了使页面加载成功的关键信息,那么你将拥有你手上有很多困惑的人

编辑

您可能想要调查 SEO 友好的 URL 以将您的查询传递到,因此您可以使用 yoururl.com/firstname=joe 而不是:yoururl.com/firstname/joe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2019-12-30
    • 2018-07-13
    • 2014-04-11
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多