HTTP 414 请求 uri 的客户错误页面太长

HTTP 414 请求 uri 的客户错误页面太长

我可以借助 customErrors 为应用程序级错误设置自定义错误页面,也可以借助 httpErrors 为 HTTP 错误设置自定义错误页面。但是它们都无法处理 HTTP 414 错误。

我已经看过了本文但我不确定我是否还没有进行足够的研究来处理此自定义错误页面。

答案1

由于414 URI Too LongRFC 7231 6.5.12/path?query) 是由于HTTP 请求的第一行中 URI 的格式错误而导致的错误,服务器永远不会看到任何其他标头,包括Host:第二行的标头:它在获得过长的 URI 后就会立即做出响应,例如

-->   GET /imagine/this/was/a/.../too.long?request=url HTTP/1.1
<--   HTTP/1.1 414 Request-URI Too Long
<--   Content-Type: text/html; charset=us-ascii
<--   Server: Microsoft-HTTPAPI/2.0

414因此,您无法在任何 Web 服务器上为每个站点配置自定义页面,这是很自然的。

我认为这可以在 IIS 上使用全局服务器实现IIS > 错误页面,但根据测试,该414错误似乎已修复,根本无法修改。我能找到的唯一来源文章来自微软已停用的 KB 内容,错误消息:HTTP 414 - 请求 - URI 太长

IIS 检查 URI 的字符串长度,如果 URI 比预期长,则不会为请求提供服务。这是设计使然。

然而,这种情况应该很少见,因为您可以通过以下方式轻松防止其发生:

  • 每当查询数据POST可能GET2000 个字符
  • 请注意任何重定向都不会导致 URL 本身被用作前缀的循环。

根据这些原则,用户永远不会看到该页面,而人类可读的自定义错误页面仅供用户使用:任何软件都可以使用来自第一个响应标头行的错误代码。

相关内容