我需要原樣將原始HTTP請求數據代理到另一個HTTP端點。Spring MVC破壞的請求參數處理
Spring MVC變異了HttpServletRequest
實例,並且在我有機會在我的控制器方法中檢查它之前消耗request.getInputStream()
,並且它以空流形式結束。
此外,Spring MVC將查詢字符串參數與POST主體參數混合在一起,但只有當輸入Content-Type
是application/x-www-form-urlencoded
時。爲了正確的代理行爲,這不能做。被代理的HTTP端點對維護單獨的查詢字符串與POST主體參數非常敏感。因爲我不能依賴Spring MVC來不破壞傳入的請求狀態,所以我需要完全繞過MVC並註冊一個獨立的Servlet
,我需要訪問未經Spring修改的原始HTTP輸入。
我的應用程序是一個Spring Boot(1.2.5)應用程序,作爲WAR部署到Tomcat 8上,但有一個static void main
在開發機器上啓動嵌入式Tomcat 8。
如何創建獨立的Servlet
來處理此代理邏輯?我試過ServletRegistrationBean
來註冊servlet,但是這仍然會破壞Spring默認過濾器的傳入請求。我需要排除這些過濾器並重新開始。