403 禁止错误的浏览器行为

Posted

技术标签:

【中文标题】403 禁止错误的浏览器行为【英文标题】:Browser behavior on 403 Forbidden error 【发布时间】:2010-12-13 01:52:49 【问题描述】:

当用户尝试访问他们无权访问的资源时,我的服务器返回 403 禁止错误。除了标头,服务器还会写一条描述错误的小消息。

在 Firefox 中,错误消息可以很好地显示,用户知道发生了什么。

在 Internet Explorer 中,该消息被隐藏并替换为 403 Forbidden 标准错误页面。

是否有任何特定规则允许我在所有浏览器中显示错误消息,同时仍将状态设置为 403 Forbidden?

这是有关此状态的 RFC 信息:

服务器理解请求,但是 拒绝履行它。 授权将无济于事 不应重复请求。如果 请求方法不是 HEAD 并且 服务器希望公开为什么 请求没有得到满足,它 应该描述原因 拒绝实体。如果服务器 不希望提供此信息 可供客户使用,状态 可以使用代码 404(未找到) 而是。

似乎我应该设置一条消息,但 IE 只是不会显示它。

【问题讨论】:

将其添加到 IE 根本不会显示的其他内容列表中 :) 我认为您所能期望的最好的就是通用的“离开” 【参考方案1】:

尝试使您的 403 页面更大(即更多字节)。一些浏览器假设一个简短的错误页面是来自网络服务器的默认页面,并决定显示他们自己的、可能更有用的文本。

More info.

【讨论】:

谢谢,这是正确的!昨晚我终于自己弄清楚了。我刚刚在正文末尾添加了一个超长的注释。有时 IE 让我发疯。【参考方案2】:

错误处理的实现取决于浏览器。在 HTTP 中,如果您只是要返回 403 错误,那么您必须依靠用户代理(浏览器的技术名称,错误消息的接收者可能不是浏览器)来处理它认为合适的方式。

如果您不喜欢浏览器处理 403 错误的方式并希望确保所有浏览器的用户体验一致,则将用户重定向到您自己的“权限被拒绝”页面。您可以建立一个页面,向他们解释权限被拒绝的原因以及他们可以做些什么。并且对于任何浏览器都是一致的。

【讨论】:

以上是关于403 禁止错误的浏览器行为的主要内容,如果未能解决你的问题,请参考以下文章

错误403禁止使用Youtube API V3

HTTP 错误 403.9 - 禁止访问:连接的用户过多

访问禁止错误 403

配置 LAMP - 出现 403 禁止错误

如何使用 Ctrl+C 结束 Flask SocketIO,错误 403(禁止)

本地主机上的 php 错误:访问被禁止!错误 403