私はWebサービスをサーバーインスタンスにデプロイしています。同じ例では、このWebサービスを使用し、エンドユーザーのフロントエンドであるwebappもあります。同じインスタンスのWebアプリケーションとWebサービス内でHTTPS通信が必要ですか?
両方が同じサーバインスタンス上にあり、通信がローカルであるので、私はHTTPSを使用しているか否かを疑問に思ったことは、オーバーヘッドになりますか?
私はWebサービスをサーバーインスタンスにデプロイしています。同じ例では、このWebサービスを使用し、エンドユーザーのフロントエンドであるwebappもあります。同じインスタンスのWebアプリケーションとWebサービス内でHTTPS通信が必要ですか?
両方が同じサーバインスタンス上にあり、通信がローカルであるので、私はHTTPSを使用しているか否かを疑問に思ったことは、オーバーヘッドになりますか?
はい、同じサーバの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);
}
}
あなたのWebサービスがボックスに「ローカル」である場合(つまり、一般公開ではなく、ループバックインターフェイス(またはローカルネットワークインターフェイスなど)にバインドされていない場合)、HTTPSを使用するとかなりのオーバーヘッドになります「より多くの」作業を行う必要があるため)。
我々は同様のアーキテクチャを持っているが、代わりにHTTPを使用して、我々は、パフォーマンスを向上させるためRMIを使用しています。これは、テキストプロトコルとは対照的にバイナリ転送を提供し、フリーマーシャル - 非整列化については言及しない。移植性を心配している場合、protobuffersのような別の効率的なプロトコルを使用すると、長期的に役立つかもしれません。 HTTPサービスから離れることについて何も言及していないので、これらのことはあなたのケースでは当てはまりません。
ありがとう!私たちはHTTPのみをサポートするさまざまなクライアントを持って、原因と右のサンジャイはthatsの、我々は離れてHTTPからの移動の選択肢を持っていない:)実際に外の世界にさらさ – Nikhil
そのを。ローカルコールにHTTPを許可し、他の人にはHTTPSを許可する方法を理解する必要があると思います。 – Nikhil
発信者からhttp要求を出すだけです。それでおしまい。 –
ねえ、私の答えを変更しました。 –