2011-12-28 10 views
2

私はWebサービスをサーバーインスタンスにデプロイしています。同じ例では、このWebサービスを使用し、エンドユーザーのフロントエンドであるwebappもあります。同じインスタンスのWebアプリケーションとWebサービス内でHTTPS通信が必要ですか?

両方が同じサーバインスタンス上にあり、通信がローカルであるので、私はHTTPSを使用しているか否かを疑問に思ったことは、オーバーヘッドになりますか?

答えて

1

はい、同じサーバのHTTPSにだけオーバーヘッドを追加します。 Webサービスのサーバーインスタンスが外の世界にを公開されていない場合はHTTP

を介して通信することができ、あなたは完全に無効にHTTPSリスナーことができます。このWebサービスサーバは、外の世界にさらさある場合

することは、あなたはHTTPSに外部からのHTTP要求をリダイレクトするフィルタを書くことができます。

これは、フィルタがどのように見えるかです:

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); 
    } 
} 
+0

そのを。ローカルコールにHTTPを許可し、他の人にはHTTPSを許可する方法を理解する必要があると思います。 – Nikhil

+0

発信者からhttp要求を出すだけです。それでおしまい。 –

+0

ねえ、私の答えを変更しました。 –

3

あなたのWebサービスがボックスに「ローカル」である場合(つまり、一般公開ではなく、ループバックインターフェイス(またはローカルネットワークインターフェイスなど)にバインドされていない場合)、HTTPSを使用するとかなりのオーバーヘッドになります「より多くの」作業を行う必要があるため)。

我々は同様のアーキテクチャを持っているが、代わりにHTTPを使用して、我々は、パフォーマンスを向上させるためRMIを使用しています。これは、テキストプロトコルとは対照的にバイナリ転送を提供し、フリーマーシャル - 非整列化については言及しない。移植性を心配している場合、protobuffersのような別の効率的なプロトコルを使用すると、長期的に役立つかもしれません。 HTTPサービスから離れることについて何も言及していないので、これらのことはあなたのケースでは当てはまりません。

+0

ありがとう!私たちはHTTPのみをサポートするさまざまなクライアントを持って、原因と右のサンジャイはthatsの、我々は離れてHTTPからの移動の選択肢を持っていない:)実際に外の世界にさらさ – Nikhil

関連する問題