我想在運行於tomcat上的Servlet中使用response.sendRedirect
,它接收來自Apache服務器的瀏覽器請求。所以,任何重定向都會用'localhost:8080'代替'ip.ip.ip.ip.ip'或'someurl.com'部分url(據我所知,這是因爲tomcat將請求源標識爲apache服務器地址) 。 request.getRequestURL
也受此問題的影響。有沒有辦法解決這個問題,而不寫回應JavaScript塊,實際上應該做重定向?Servlet重定向不能與Apache Tomcat + Apache服務器結合使用
回答
簡單的解決方案: 在屬性中配置基礎URL(從瀏覽器的角度來看),然後將其用作重定向的基礎URL。在這種情況下,你可以使用類似:
response.sendRedirect(baseURLproperty + request.getRequestURI() + "?" + request.getQueryString())
更復雜的解決方案: 由於您使用Apache作爲反向代理,你可以配置它來添加自定義請求頭與原來的URL。看看:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
對不起,但是Web應用程序可以在幾個不同的位置運行,所以URL地址可能不同(我更喜歡找到正確的解決方案,只是爲了使代碼更清晰)。我發現臨時解決方案從它獲取request.getHeader(「referer」)和URL的「root」部分,但只有當我從應用程序中的一個頁面重定向到其他頁面時,這纔會起作用。關於代理 - 這個Web應用程序中有很多依賴於當前設置,我不能冒險改變它們(所以我需要Java代碼解決方案)。 – user3628678
注意那個安全含義!頭部很容易被欺騙/僞造,並可能導致各種利用**「開放重定向」漏洞的攻擊**嘗試在執行重定向之前根據有效值列表驗證用戶輸入。 – DavidC
- 1. 將tomcat重定向到https使用apache服務器(Windows)
- 2. 使用Apache Tomcat與WAMP的服務器
- 3. 本地Apache服務器重定向
- 4. APACHE重定向到使用MOD_PROXY的TOMCAT
- 5. 將Apache服務器中的.html請求重定向到Tomcat服務器
- 6. Servlet-Apache Tomcat
- 7. 。不能使的index.php與開發服務器上的Apache 重定向到/
- 8. 在apache tomcat服務器上使用CakePHP
- 9. 使用Apache Tomcat的Express.js服務器
- 10. Apache Tomcat服務器錯誤
- 11. Servlets和Apache Tomcat服務器
- 12. Apache服務器和Tomcat服務器
- 13. 前移的Tomcat與Apache HTTP服務器
- 14. 使用mod_jk重定向tomcat上的子域通過Apache服務器
- 15. 的Tomcat應用反向代理服務器與Apache HTTP服務器
- 16. Apache Web服務器後端服務器重定向規則
- 17. 如何結合Apache重定向?
- 18. PHP如何使用Apache服務器重定向到另一頁?
- 19. 使用tomcat 7配置mod_proxy apache https服務器https服務器
- 20. Apache Tomcat服務器中的Catalina.jar是什麼?它與servlet-api.jar有什麼不同?
- 21. 使用隱式重定向重寫Apache
- 22. Apache重定向(使用.htaccess)
- 23. 何時使用Apache與Apache + Tomcat?
- 24. 如何從Apache重定向到Tomcat?
- 25. Apache 2.2和tomcat重定向的子域
- 26. apache tomcat重定向到新的網址
- 27. Apache服務器配置多個Apache Tomcat應用
- 28. ijab聊天只能與Apache服務器一起使用嗎?
- 29. apache重寫不重定向?
- 30. 如何重定向與Apache
顯示重定向的代碼。 – Stefan