如何在 Javascript 中没有 POSTDATA 警告的情况下重新加载页面?

IT技术 javascript refresh reload postdata
2021-03-10 12:53:54

我想使用以下方法重新加载页面:

window.location.reload(true); 

但是我收到 POSTDATA 警告,因为刷新功能想要重新发送以前的 POST 表单数据。如何在没有此警告的情况下刷新我的页面?

更新:我无法控制该项目!我无法解决 POST 本身!

6个回答

没有警告你不能刷新;refresh 指示浏览器重复上一个操作。如果重复上一个操作涉及重新提交数据,则由浏览器选择是否警告用户。

您可以通过执行以下操作使用新会话重新导航到同一页面:

window.location = window.location.href;
也许吧,但是如果用户出于任何原因点击返回,他们仍然会收到警告,所以也许使用 PRG 取决于重新提交的后果是什么。
2021-04-18 12:53:54
@sam 你已经超出了问题的范围。我们对提问者如何或为什么处于他所处的境地一无所知。
2021-04-23 12:53:54
用户仍然可以点击后退按钮并重新提交帖子,这可能会产生意想不到的结果(例如重复购买)。PRG 是一个更好的解决方案。
2021-05-04 12:53:54
是的,如果服务器识别出重复的帖子,这不是问题,但用户仍然会看到一个对话框需要担心。使用 PRG,用户将永远不会看到该对话框。
2021-05-08 12:53:54
请注意,当 url 包含 # 时,这将不起作用(至少在 firefox 中)。
2021-05-08 12:53:54

仅更改window.locationJavaScript 是危险的,因为用户仍然可以点击后退按钮并重新提交帖子,这可能会产生意想不到的结果(例如重复购买)。PRG是一个更好的解决方案

使用 Post/Redirect/Get (PRG) 模式

为了避免这个问题,许多 web 应用程序使用 PRG 模式——而不是直接返回一个 HTML 页面,POST 操作返回一个重定向命令(使用 HTTP 303 响应代码(有时是 302)和 HTTP“位置”响应头),指示浏览器使用 HTTP GET 请求加载不同的页面。然后可以安全地为结果页面添加书签或重新加载,而不会产生意外的副作用。

PRG 在 POST 之后完成,静默地将客户端重定向到 GET 页面,因此它们的历史记录中没有 POST。(值得向拥有控制权的人提出建议。)如果这是您无法做的事情,那么您可以导航到 GET 页面而不是重新加载 POST 吗?
2021-04-16 12:53:54
我无法控制该项目。我无法解决 POST 本身!
2021-04-20 12:53:54
我们如何使用PRG,我仍然不明白,当我重新加载页面时,它总是问我是否要重新加载,如何在此处应用PRG,您能否提供示例代码
2021-04-24 12:53:54
是的,但是重定向 POST 需要某种形式的控制
2021-05-16 12:53:54

我在使用 Rex 的解决方案无法重新加载锚点/散列 url(包括 #)时遇到了一些问题...

所以我最终删除了哈希部分:

window.location = window.location.href.split("#")[0];

要绕过 POST 警告,您必须使用完整 URL 重新加载页面。工作正常。

window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname;
然后将 window.location.hash 添加到最后。
2021-04-18 12:53:54
这个版本不传递get查询参数,我使用了以下修改版本:window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname + window.location。搜索;
2021-04-21 12:53:54
有关包含协议(如果不是 80)和参数的完整 URL,请参阅bl.ocks.org/abernier/3070589
2021-04-23 12:53:54
这不起作用。尽管它确实绕过了 POST 警告,但它也绕过了发送任何可能需要的 post 变量。
2021-05-01 12:53:54

您可以使用 JavaScript:

window.location.assign(document.URL);

在 Firefox 和 Chrome 上为我工作

检查此链接:http : //www.codeproject.com/Tips/433399/PRG-Pattern-Post-Redirect-Get