POST 后重新加载浏览器窗口,而不提示用户重新发送 POST 数据

2024-03-03

当用户访问我的网站时,每个页面上都会有一个“登录”链接。单击此按钮会使用一些 JavaScript 来显示一个覆盖窗口,系统会在其中提示用户输入其凭据。输入这些凭据后,将向 Web 服务器发出 Ajax 调用以验证它们;如果它们有效,则会发回身份验证票证 cookie 并重新加载页面,以便显示页面上特定于经过身份验证的用户或(现在)当前登录用户的任何内容。

我正在通过脚本完成页面重新加载:

window.location.reload();

这对于通过 GET 请求加载的页面(绝大多数)非常有效,但有些页面使用回发表单。因此,如果用户转到这些页面之一,执行回发,然后选择登录,当window.location.reload()脚本运行时,系统会提示对话框,询问是否要重新提交 POST 正文。

我想解决这个问题我可以告诉浏览器重新加载页面,所以我尝试了:

window.location.href = window.location.href;

但浏览器不会对上述语句采取任何操作,我猜是因为它认为新 URL 与旧 URL 相同。如果我将上面的内容更改为:

window.location.href = window.location.pathname;

它重新加载页面,但我丢失了所有查询字符串参数。

我当前的解决方法足够了,但还不够漂亮 - 简而言之,我在当前的查询字符串参数上添加了一个查询字符串参数window.location.href值,然后将其分配回window.location.href通过致电reloadPage("justLoggedIn"),其中reloadPage函数是:

function reloadPage(querystringTackon) {
    var currentUrl = window.location.href;

    if (querystringTackon != null && querystringTackon.length > 0 && currentUrl.indexOf(querystringTackon) < 0) {
        if (currentUrl.indexOf("?") < 0)
            currentUrl += "?" + querystringTackon;
        else
            currentUrl += "&" + querystringTackon;
    }

    window.location.href = currentUrl;
}

这可行,但会导致 URL 变为www.example.com/SomeFolder/SomePage.aspx?justLoggedIn,这看起来很俗气。

JavaScript 有没有办法让它执行 GET 重新加载而不提示用户重新提交 POST 数据?我需要确保任何现有的查询字符串参数都不会丢失。


window.location.href = window.location.href;

不要问我为什么它有效......但它确实有效:)。
这就是 js 引擎解释我想的逻辑的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

POST 后重新加载浏览器窗口,而不提示用户重新发送 POST 数据 的相关文章

  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • 为具有可变内容的内联块元素提供相同的高度?

    我有 4 个宽度固定但内容可变的内联块元素 并且我希望所有这些元素具有相同的高度 最大元素的高度 请参见这个jsfiddle http jsfiddle net kKZXj 我应该如何实现这个目标 如果仅使用 css 无法做到这一点 那么使
  • 了解执行模型和事件循环

    我读过很多关于JavaScript单线程执行模型 事件循环和事件队列的文章 但有一件事尚不清楚 我创建了一个小提琴来说明我的问题 http jsfiddle net yzpmf67f http jsfiddle net yzpmf67f
  • 一个文本区域中的文本应复制到另一个文本区域,并且应使用 JavaScript 单击按钮清除原始文本区域

    我已经完成了以下代码 它显示两个文本区域 其中一个文本区域中的文本通过使用 javascript 单击按钮复制到另一个文本区域
  • 表单未使用 AJAX 提交

    再次更新 如果有人关心的话 我之前发布的解决方案由于某种原因停止工作 我在 ajax 请求中包含了 beforeSend 并将验证表单的 js 部分粘贴到其中 现在就像一个魅力 form on submit function e e pre
  • 对 JavaScript 中的 while 循环感到困惑

    我可能在这里有点厚重 但请回答我这个问题 考虑以下代码 a 1 while a lt 6 console log a a 如果我运行这个 我会在控制台中得到从 1 到 6 的值 然后是另一个 6 现在看看这个 a 1 while a lt
  • Chart.js 没有显示在我的视图中

    我有一个使用 angular js 运行的应用程序 我的视图之一应该加载图表 我正在使用 Chart js 但由于某种原因它不起作用 并且我的控制台上没有显示错误 这是我创建图表的函数 scope writeBatteryChart fun
  • 在 AngularJS 中覆盖运行时的依赖关系

    我有一个服务叫 doggedHttp 它公开了与 http 现在我想创建一个 doggedResource服务是有角度的 resource服务之上 doggedHttp代替 http 换句话说我想注入 doggedHttp as the h
  • 如何最好地实现多个重叠元素的翻转和推出事件?

    Problem 我正在开发一个网站 其中有一个 拨号盘 显示代表伞式公司不同部门的多个选项卡 目前我已经用 HTML CSS 准备好了一切 每个选项卡的定位 内圈处于较高位置z index因为选项卡在滚动时需要向外动画 我可以实现这部分 选
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • RxJS - 从可观察对象中获取最后 n 个元素

    我想从可观察对象中获取最后 3 个元素 假设我的时间线是这样的 a b c d e f g h i j gt where a b c d e f g h i j are emitted values 每当发出新值时 我想立即获取它 因此它可
  • 获取键盘事件中的鼠标位置

    我试图在用户按住 Shift 键时出现选择轮 滚轮应以鼠标位置为中心 然而当我测试这个时 pageX and clientX两者在事件对象上都未定义 是否可以通过键盘事件获取鼠标坐标 不 只需跟踪mousemove事件并持续保存当前位置 以
  • 日期时间的自定义 JavaScriptConverter?

    我有一个对象 它有一个 DateTime 属性 我想通过 AJAX JSON 将该对象从 ashx 处理程序传递回网页 我不想使用第 3 方控件 当我这样做时 new JavaScriptSerializer Serialize DateT
  • 如何在流程图中间隔刻度线?

    我下面有一个流程图 您将看到标签被压缩 我想使刻度之间的宽度确保显示所有标签 标记如下 div div class graph info a href span span a a href class active span span a
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 用于客户端存储和服务器端同步的javascript库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我将数据存储在客户端数据库中 并在后台自动将数据库同
  • 为什么严格模式下不允许使用八进制数字文字(解决方法是什么?)

    为什么八进制数字文字不允许JavaScript 严格模式 https developer mozilla org en docs Web JavaScript Reference Strict mode 有什么害处呢 use strict
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下
  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css

随机推荐

  • Fortran 95 数组中具有一维变量的二维数组

    我想在代码中将一些内容存储在二维数组中 然后想扫描该数组 有N 1 行 第一个索引的数量 比如说i 在数组中 然而 对于给定值i 数量j尽管我知道最大可能值 但值不是固定的j 说它是N 2 我当然可以创建大小的数组 N 1 N 2 来存储我
  • IIS会回收asp.net core进程吗?

    我需要在我的 asp net core 应用程序中运行长时间运行的后台任务 我了解 Azure Webjobs 和其他进程外技术 但我宁愿保持解决方案简单并直接在 asp net core 进程中运行这些任务 我使用 Kestrel 该应用
  • 使 VSCodium 的 python 代码突出显示等于 VSCode

    因为 微软不好 而从 VSCode 迁移到 VSCodium 发展python应用程序似乎缺少一些代码颜色 例如 Dark 主题中绿松石色的模块或浅蓝色的局部变量 在下面的比较中可见 Left VSCodium Right VSCode 正
  • 如何在Android中读取彩信数据?

    我想读取彩信数据 我已经在中看到了零件表mmssms db彩信条目的存储位置 我正在使用光标 我想知道合适的URI 我正在使用 content mms sms conversations 并且列名称图像的 地址 发送至 文本 或 主题 和
  • 在 C# 中比较两个结构体的值

    我不是在寻找返回 bool 的两个结构的比较 我想知道是否有一种方法可以获取两个结构的哪些字段 相同的结构 但可能不同的值 是不同的 基本上我想要一种更简单的方法来执行以下操作 public class Diff public String
  • 如何将命令行参数从 pytest 传递到代码

    我正在尝试将参数从 pytest 测试用例传递到正在测试的模块 例如 使用 main pyPython 样板 https www python boilerplate com py3 argparse pytest 我可以从命令行运行它 p
  • 音频元素源的 HTML5 本地存储 - 可能吗?

    我最近一直在尝试 html5 的音频和本地存储功能 但遇到了一些让我困惑的事情 我希望能够在本地缓存或存储音频元素的源 以实现更快的离线播放 问题是我看不出当前的实现如何可能实现这一点 我使用 WebKit 尝试过以下操作 创建一个清单文件
  • Azure DocumentDB 十进制截断

    我目前正在使用 Azure DocumentDB 来存储带有价格的产品数据 几乎一切都工作得很好 但现在我遇到了一个问题 即从 DocumentDB 读取时我的小数 System Decimal 被截断 比如这个价格 Input Price
  • 如何使用带有StanfordCoreNLP prop 'ner'的序列化CRFClassifier

    我正在使用StanfordCoreNLP API 接口以编程方式执行一些基本的NLP 我需要在自己的语料库上训练模型 但我想使用StanfordCoreNLP界面来做到这一点 因为它在幕后处理许多干的机制 我在那里不需要太多的专业知识 我已
  • PHP中两个日期相减

    我在 php 中有两个日期 date1 May 3 2012 10 38 22 GMT date2 06 Apr 2012 07 22 21 GMT 然后我将它们都减去 date2 date1 并得到 Result 6 为什么结果是 6 而
  • R dplyr:在列中查找特定值,然后用该值替换右侧后续列中的相邻单元格

    我正在尝试创建一个地点和事件时间的矩阵 就我而言 一旦事件发生 1 它就是永久性的并且不能返回到 0 一旦列中的单元格为 1 我将尝试用 1 填充右侧后续列中的相邻单元格 请参见下面的示例 site lt c A B C D E F G s
  • 用于生成 HTML 标签的 PHP 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 PHP 新手 抱歉 如果这是常见问题解答 假设我有这个 HTML 表 table width 10
  • 在 Javascript 或 jQuery 中,如何仅删除第一个和最后一个标签?

    给定以下字符串 var htmlStr p class red 349dsa01 This is p p class blue saf9vsaz a test p 如何删除该字符串的第一个和最后一个标签 这将是结果 var htmlStr
  • 有关角度谷歌地图聚类选项的任何文档吗?

    您好 我正在使用此处提供的 Angular Google 地图库https github com nlaplante angular google maps https github com nlaplante angular google
  • Facebook:自动刷新长期访问令牌

    我正在为我的应用程序的用户存储长期访问令牌 这些用户已将其 Facebook 帐户与其关联 自灭亡以来离线访问代币 这些长期存在的代币的有效期为 大约 60 天 但是 当用户与 Facebook 交互时 它们可以自行刷新 根据文档 http
  • 如何在终端中创建换行符?

    我在最新的 Mac OSX 终端上使用 Python 当我按 Enter 时 它会处理我输入的代码 并且我无法弄清楚如何添加额外的代码行 例如对于基本循环 在 python shell 中 如果您正在键入允许继续的代码 则按一次 Enter
  • 非类型参数的模板参数必须是表达式

    为什么下面的代码是错误的 template
  • 在 WebGL 中与 HTML 背景混合

    我正在将平面颜色和纹理绘制到 WebGL 画布中 我的颜色和纹理具有不同的 alpha 值 我希望它们能够正确混合 我想要透明背景 它们应该与画布下的 HTML 内容混合 在 WebGL 中 我使用 gl clearColor 0 0 0
  • memcpy 是否保留不同类型之间的数据?

    是否打电话memcpy如果缓冲区大小足够 在两个不同的结构上保留原始数据 如果它们各自的数据类型重叠 它是否被定义为用先前数据类型的数据检索另一种数据类型的值 对于两种 c cpp 语言来说 这应该是相似的 但我在 cpp 中提供了一个示例
  • POST 后重新加载浏览器窗口,而不提示用户重新发送 POST 数据

    当用户访问我的网站时 每个页面上都会有一个 登录 链接 单击此按钮会使用一些 JavaScript 来显示一个覆盖窗口 系统会在其中提示用户输入其凭据 输入这些凭据后 将向 Web 服务器发出 Ajax 调用以验证它们 如果它们有效 则会发