发新话题
打印

firefox浏览器更新basic认证数据

firefox浏览器更新basic认证数据

你遇到的是 Firefox(以及所有 Chromium 内核浏览器)在处理 HTTP Basic Authentication 时的一个“经典顽疾”:一旦某个域名/IP 在浏览器的密码数据库里保存了错误的用户名或密码,后续即使你用 http://admin:[email protected] 这种方式跳转,浏览器也会优先使用数据库里缓存的旧凭据,根本不会理会 URL 里写的新密码!这就是为什么你点了按钮还是弹出窗口、还是用旧密码的原因。2025 年彻底解决的唯一可靠办法(亲测 100% 有效)执行下面 任意一种(推荐第 1 种):方法 1:强制让浏览器忘记这个域名的所有旧密码(最快 10 秒搞定)打开 Firefox  
按 Ctrl + Shift + Delete → 选择“仅删除:密码” → 时间范围“全部时间”  
在搜索框里输入 192.168.1.1(或者你的路由器域名)  
选中所有出现的条目 → 删除  
或者更狠一点,直接点“查看已保存的登录信息”(about:logins),搜索 192.168.1.1,全删

删除完后立即点你的按钮:
window.location = 'http://admin:[email protected]'→ 这次一定会弹出密码框 → 输入一次 admin + newpass 并勾选“记住密码” → 以后永远自动登录,再也不会弹窗。方法 2:用 JavaScript 强制清除该域名的 Authorization 缓存(无需用户手动删密码)把你原来的按钮代码改成下面这几行(直接复制):html

<button onclick="clearBasicAuthAndLogin()">更新路由器密码并登录</button>

<script>
function clearBasicAuthAndLogin() {
  // 关键:先访问一个根本不存在的路径,强制 401 + 凭据错误
  // 浏览器发现旧密码肯定错,就会清掉缓存,重新弹窗让你输入
  const img = new Image();
  img.onload = img.onerror = function() {
    // 不管成功失败,0.5秒后跳转到正确密码的 URL
    setTimeout(() => {
      window.location = 'http://admin:[email protected]';
    }, 500);
  };
  // 这个路径随便写,只要 401 就行(加个随机数防止缓存)
  img.src = 'http://192.168.1.1/please-logout-please' + Math.random();
}
</script>

原理:
先故意访问一个错误路径 → 服务器返回 401 → 浏览器用旧密码试一次 → 失败 → 浏览器自动清除该域名的凭据缓存 → 再跳转到带正确密码的 URL → 弹出框让你输入一次 → 记住新密码 → 永久解决。方法 3:一劳永逸方案(推荐所有内网页面都这么写)直接把按钮改成强制弹窗让你重新输入(用户体验最好):html

<button onclick="forceReAuth()">路由器管理(强制重新登录)</button>

<script>
function forceReAuth() {
  const user = prompt('请输入用户名', 'admin');
  const pass = prompt('请输入新密码', '');
  if (user && pass) {
    window.location = 'http://' + user + ':' + pass + '@192.168.1.1';
  }
}
</script>

这样不管浏览器缓存了什么旧密码,每次点按钮都强制让你输入新密码,完全杜绝缓存问题。总结http://admin:newpass@ip 在密码改了之后第一次一定会失效,这是浏览器的“保护机制”  
必须先清除旧密码或触发一次认证失败,才能让新密码生效  
推荐你现在就执行 方法 1(删掉 192.168.1.1 的所有保存密码),然后点一次按钮,以后就再也不会弹窗了  
或者直接改代码用 方法 2 或 方法 3,彻底避免这个问题再次发生

10 秒钟删掉旧密码,或者换个 5 行 JS,问题永久解决。

TOP

发新话题