1
我有一个由jetty提供的web服务。 如何过滤非法字符的URL?如何自定义响应错误400错误请求
当请求URL具有非法字符时,我无法控制某些返回信息。
实际上,我想在URL无效时返回一些特定的信息。例如: :我在我的应用程序中添加了一个过滤器来验证URL,如果非法,那么我将返回定义的信息。
但是,我不能过滤一些URL,如“%adsasd”,它似乎是由码头处理。
卷曲-v -X PUT -u用户:密码 '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
是的,但我可以处理不良的网址和拒绝与自定义信息?例如:返回一个json字符串,{“错误”:“你需要检查你的URL”}等 – CHmoonKa 2014-09-29 06:17:40
我想拒绝我的网址过滤器不是码头的容器。但是,现在具有被码头拒绝的错误URL的请求,没有发送到我的应用程序。 – CHmoonKa 2014-09-29 06:50:18
正如答案所指出的那样,由于这是非常糟糕的,因此码头无法知道发送到哪个上下文(即web应用),它永远不会发送到服务器上的应用程序,它太破碎了待处理。这是一个早期的协议错误。有效的HTTP客户端应该基于HTTP响应代码处理此错误,而不是正文内容。 – 2014-10-01 18:04:52