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