如何自定义响应错误400错误请求

时间:2014-09-28 05:04:08

标签: java web-services url jetty jetty-9

我有一个由码头提供的网络服务。 如何使用非法字符过滤网址?

当请求URL包含非法字符时,我无法控制某些返回信息。

实际上,我希望在URL无效时返回一些特定信息。 例如:我在我的应用程序中添加了一个过滤器来验证URL,如果非法,那么我将返回定义的信息。

但是,我无法过滤某些网址,例如"%adsasd",它似乎由码头处理。

  

curl -v -X PUT -u user:password' http://myip.com:8080/%adsasd'

*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
* Server auth using Basic with user 'user'
> PUT /%adsasd HTTP/1.1
> Authorization: Basic YWRtaW46MTIzNDU2
> User-Agent: curl/7.35.0
> Accept: */*
> Host:127.0.0.1:8080
>  < HTTP/1.1 400 Bad Request 
   < Content-Length: 0
* Server Jetty(9.0.6.v20130930) is not blacklisted 
   < Server: Jetty(9.0.6.v20130930) < 
* Connection #0 to host 127.0.0.1 left intact

1 个答案:

答案 0 :(得分:0)

Jetty的错误响应

HTTP/1.1 400 Bad Request

表示Jetty确实将其检测为错误的网址并将其拒绝。

至于如何定制这个,这真的很棘手,主要是因为它发生在这个特定请求的处理过早。

在解析原始传入的http请求期间,在服务器容器甚至试图找出要与之通信的上下文之前,会出现这种错误(400 Bad Request)。

在特定的webapp上下文中无法使用自定义错误处理程序来处理这种基本的http错误。由于服务器尚未弄清楚甚至可以与之交谈的背景。

服务器端(即使在全局级别)也无法自定义此错误消息。

如果您想要这样的功能,please file a feature request