如何为414 URI太大生成自定义错误响应

时间:2016-08-24 18:48:44

标签: embedded-jetty jetty-9

我最近从Tomcat切换到Jetty,从那以后,我可以在日志中看到这种WARN。

  

WARN org.eclipse.jetty.http.HttpParser - URI太大> 65535

     

WARN org.eclipse.jetty.http.HttpParser - 解析了错误的HTTP:414为   HttpChannelOverHttp @ 34ff28 {R = 0,C =假,A = IDLE,URI = NULL}

我正在寻找一种方法来更改发生这种情况时返回的响应(我更喜欢json响应,而不是默认返回的HTML)并且不记录警告。这是可以做到的吗?经过一些研究之后,似乎在任何地方我都可以注入一些代码来处理这个错误(如servlet过滤器的例子)之前记录了这个错误。

1 个答案:

答案 0 :(得分:0)

这是一种称为“错误请求”的错误,在处理传入请求时很早就会出现

错误请求的一些示例

400 Bad Request              (common)
412 Precondition Failed      (rather esoteric, rare)
413 Request Entity Too Large (very common)
414 URI Too Long             (very common)
431 Requested Header Fields Too Large  (not produced by Jetty, yet)

错误请求没有请求URI,因此无法发送到该上下文的上下文来处理它。

这些类型的错误请求也没有标头,因此您甚至无法检查Accept标头以确定是否应该将响应发送回application/json

人们看到这些响应代码的最常见原因是:

  • 东西是端口扫描
  • 客户端正在尝试连接到您的HTTP服务器,但不是HTTP客户端(例如:配置错误的电子邮件客户端)
  • 请求来自执行不当的HTTP User-Agent
  • 有人正在探测您的服务器是否存在漏洞(其中有许多漏洞存在各种请求元数据)
  • 您的服务器(例如API)的使用与您记录的内容不符(例如:尝试将大型文档作为编码查询字符串发送)