大家好,这里是大海笔记。今天咱们来聊聊一个让不少站长头疼的问题——”401 Unauthorized Access”错误。这个HTTP错误代码,说白了,就是网站服务器在告诉你:”兄弟,你访问的页面需要密码,你给的认证信息不对,所以我就不给你看了。”
401错误代码是什么?
互联网工程任务组(IETF)定义的401错误,也就是“未授权”,是指请求没有被执行,因为它缺少目标资源的有效认证凭据。生成401响应的服务器必须发送一个包含至少一个适用于目标资源的挑战的WWW-Authenticate头字段。
401错误代码介绍
HTTP 400状态代码是在请求出现问题时遇到的。特别是401错误,发生在你的浏览器拒绝你访问你尝试访问的页面时。
结果,浏览器不会加载网页,而是加载一个错误消息。401错误可以在任何浏览器中发生,所以出现的消息可能会有所不同。
例如,在Chrome或Edge中,你可能会看到一个纸张图标,以及一个简单的消息,告诉你有问题的页面无法工作。它会在底部包含“HTTP错误401”这个短语,并指示如果问题持续存在,请联系网站的拥有者。
401错误的原因
如果你遇到400s的错误代码,你知道你是在处理客户端(或浏览器端)的问题。然而,问题可能发生在你的浏览器内,但这并不一定总是意味着它是罪魁祸首,我们将在后面更详细地解释。
401错误发生在受限资源上,比如你的WordPress网站的受密码保护的页面。所以可以肯定的是,问题的原因与认证凭据有关。
- 过时的浏览器缓存和cookies —— 你可能遇到401错误的一个最常见的原因是你的浏览器缓存和cookies过时了,阻止了授权成功进行。如果你的浏览器没有使用有效的认证凭据(或根本没有),服务器将拒绝请求。
- 插件不兼容 —— 有时,这个错误是由插件不兼容或错误引起的。例如,防火墙或安全插件可能会将你的登录尝试误认为是恶意活动,并返回401错误以保护页面。
- URL不正确或链接过时 —— 问题的原因也可能归因于一个小错误。这类常见的罪魁祸首包括URL输入错误或链接过时。
如何修复401错误
现在我们已经对401错误有了一定的了解,是时候讨论如何解决它了。
让我们看看你可以使用的五种方法:
- 检查URL中的错误
- 清除浏览器的缓存
- 刷新你的DNS
- 停用你的WordPress插件
- 检查WWW-Authenticate头响应
1. 检查URL中的错误
从最简单的潜在修复方法开始:确保你使用了正确的URL。这听起来很简单,但401错误有时会出现,如果URL输入不正确的话。
另一种可能性是,你用来访问页面的链接指向了错误的URL。例如,它可能已经过时,或者指向了一个不再存在的页面(并且没有重定向)。
因此,值得再次检查你使用的URL。如果你是自己输入的,请验证你拼写正确。如果你点击了一个链接,请确认它指向你尝试访问的页面(或者尝试直接通过网站访问该页面)。
2. 清除浏览器的缓存
浏览器的缓存旨在通过减少页面加载时间来改善你的在线体验。不幸的是,有时它也会导致不必要的中断。
正如前面提到的,401错误的一个常见原因是过时或不正确的缓存数据或cookies。因此,如果你没有发现页面URL有任何问题,下一步是清除浏览器的缓存。
这将清除浏览器本地存储的任何无效信息,这可能会中断认证过程。同样,你的浏览器的cookies可能包含需要刷新的认证数据。
如果你是Google Chrome用户,你可以通过点击浏览器右上角的菜单图标,然后转到设置。在隐私和安全部分,点击清除浏览数据:
一个新的窗口将打开。在基本标签下,确保选中所有三个框,然后选择清除数据:
这个过程在其他浏览器中看起来会有点不同。例如,在Mozilla Firefox中,你会点击浏览器右上角的图书馆图标,然后是历史记录 > 清除最近的历史记录:
在打开的面板中,选择顶部下拉菜单中的全部,确保选中了缓存,然后点击立即清除按钮:
如果你使用的是不同的浏览器,请参考这个指南来清除缓存。
3. 刷新你的DNS
另一种你可以尝试解决401错误的方法是刷新你的域名服务器(DNS)。虽然这是一个罕见的问题,但它可以是一个可能的原因,所以如果前两个解决方案不起作用,值得一试。
在Windows中执行此操作,点击开始按钮,在搜索栏中输入cmd
。按回车,命令提示符将打开。复制并粘贴命令ipconfig/flushdns
,然后再按回车:
在Mac上,你可以这样做:前往Finder > 应用程序 > 实用工具 > 终端:
输入命令行sudo killall -HUP mDNSResponder
并按回车。然后,你可以尝试刷新你尝试访问的页面,看看401错误是否已解决。
4. 停用你的WordPress插件
导致你的401错误的问题可能不是因为你的浏览器。如果你在访问你的WordPress网站时遇到麻烦,也有可能是其中一个或多个插件的错。
一些插件,特别是以安全为重点的插件,被配置为在它们怀疑可疑的登录活动可能表明攻击时显示401错误。其他人可能只是遭受兼容性问题。因此,停用你的WordPress插件是个好主意,看看这是否解决了问题。
你可以在仪表板中同时停用你的插件,前往插件 > 已安装的插件。在顶部选中所有复选框。然后在批量操作下拉菜单中,选择停用并点击应用按钮:
5. 检查WWW-Authenticate头响应
最后,如果问题还没有解决,可能是服务器端的问题。这意味着我们的最后一个修复将更加复杂。
正如我们前面看到的,401响应是通过WWW-Authenticate头发送的,它出现为WWW-Authenticate: <type> realm=<realm>
。它包括“挑战”,或数据字符串,表明授予访问权限所需的认证类型。
简而言之,你要检查头响应是否已发送,更具体地说,使用了哪种认证方案。至少,这可以帮助缩小问题的原因,并让你更接近解决方案。
要做到这一点,转到显示401错误的网页,并在Chrome中访问开发者控制台。你可以在页面上点击右键并选择检查,或者使用Ctrl+Shift+J。
接下来,点击网络标签并重新加载页面。这将生成资源列表。选择状态头以对表格进行排序,并找到401状态码:
选择该条目,然后点击头标签。在响应头下,找到WWW-Authenticate头:
响应头部分的开发者控制台响应头中存在的信息,特别是认证方案,可以给你更多关于发生了什么的信息,并将你指向解决方案。它可以帮助你知道服务器期望什么类型的认证。
例如,在上述示例中,我们可以看到认证方案是“Basic”。这意味着认证请求只需要一个ID和密码。有关如何使用此信息的更详细信息和说明,我们建议参考HTTP认证方案注册表。
总结
当你的浏览器和服务器在沟通或者验证请求时遇到障碍,有时候你不得不面对像401这样的错误。虽然这问题挺让人恼火的,但通常来说,这个错误信息是暂时性的,是可以解决的。