![](/img/trans.png)
[英]I need to know the HTTP and HTTPS port my java webapp is running on webapp startup
[英]Do I need HTTPS communication within a webapp and a webservice on the same instance?
我在服務器實例上部署了Web服務。 在同一實例上,我們還有一個使用該Web服務的Web應用程序,它是最終用戶的前端。
由於兩者都在同一服務器實例上並且通信是本地的,所以我想知道是否使用HTTPS會產生開銷?
如果您的Web服務是“本地”的,即不是面向公眾的,並且沒有綁定到環回接口(或更像是本地網絡接口),則使用HTTPS會產生可觀的開銷,並且出於顯而易見的原因(沒有必要)(因為它需要做“更多”的工作)。
我們有一個類似的體系結構,但不是使用HTTP,而是使用RMI以獲得更好的性能。 它提供了與文本協議相對的二進制傳輸,更不用說免費提供的自動編組-解組了。 如果您擔心可移植性,那么從長遠來看,使用其他有效協議(如protobuffers)可能會有所幫助。 盡管我確定這些事情在您的情況下不適用,因為您沒有提到任何脫離HTTP服務的內容。
是的,在同一服務器上,HTTPS只會增加開銷 。 可以通過HTTP進行通信
如果Web服務服務器實例未暴露於外界 ,則可以完全禁用HTTPS偵聽器 。
如果此Web服務服務器暴露於外界 ,那么您可以編寫一個過濾器,在其中將來自外部的http請求重定向到https 。
這是過濾器的外觀:
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
if(httpRequest.isSecure() || isHostAllowed(servletRequest.getRemoteHost()) ){
filterChain.doFilter(servletRequest, servletResponse);
} else{
String url = "https://"+servletRequest.getServerName() + "/" + httpRequest.getRequestURI();
httpResponse.sendRedirect(url);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.