2011-06-02 46 views
7

在java servlet中,如何根據客戶端的IP地址來限制來自用戶的http請求?我不想每秒發送超過X個來自特定源IP地址的請求,其中X是可配置的,並具有[0.1; 10]範圍內(從10秒中的1次請求到每秒10次請求)。在Java Servlet中調節HTTP請求

回答

2

我會爲該任務寫一個過濾器。

3

使用Servlet過濾器:如果你在碼頭7.0或更高版本有this

2

正如@EJP表示,採用與存儲的IP地址關鍵的最後訪問時間HashMap中的過濾器。最少10次請求會在通話間翻譯爲100ms。發送服務器繁忙的錯誤代碼並殺死請求將迅速關閉連接使用的資源。如果這是您的選擇,那麼Apache有預先構建的解決方案。

1

檢查您使用的容器是否提供了這種拒絕服務。如果不是,那麼你將不得不使用過濾器。

ServletRequest.getRemoteHost()使您可以訪問客戶端IP。