Web 服务器处理 Tomcat Servlet 的 SSL 连接
Webserver handling SSL connection for Tomcat Servlet
我理解 the Tomcat documentation 如下:如果我有一个像 https://mywebpage.com
这样的网页,并且我有一个可以作为 https://mywebpage.com/pathToServlet/MyServlet
访问的 servlet,那么 Web 服务器已经完全处理 SSL 连接了吗?
是不是说我连servlet代码都不用改,用
就够了
@WebServlet(urlPatterns = {"/MyServlet"})
public class MyServlet extends HttpServlet { ... }
这是正确的还是我误解了这个概念?
你是对的。 Tomcat 将为您处理 SSL 详细信息。
您的 servlet 将只接收请求,无论它是通过 HTTP 还是 HTTPS 到达,因为您在 servlet 中声明的 URL 模式在服务器上,无论服务器在什么域或协议上暴露于。例如,所有发送到这些 URL 的请求都将到达您的 servlet,假设您的 Tomcat 在这些域的端口 80 和 443 上侦听:
http://mywebpage.com/pathToServlet/MyServlet
https://mywebpage.com/pathToServlet/MyServlet
http://someotherdomain.com/pathToServlet/MyServlet
https://someotherdomain.com/pathToServlet/MyServlet
当您的 servlet 收到请求时,会有一些细节让您作为程序员能够确定请求到达的连接类型,例如 ServletRequest.isSecure() method, and some other SSL attributes (see section 3.9 in this spec,或者您拥有的任何版本).
显然,当 运行 Tomcat 在另一个 Web 服务器(如 Apache、Nginx、IIS 等)后面时,SSL 可能由 Apache、Nginx、IIS 处理,而不是由 Tomcat。在这种情况下,Web 服务器在向其传递请求时需要提供 Tomcat 额外信息,说明请求是通过 HTTPS 还是 HTTP 到达的,或者在请求中添加有关客户端调用的任何额外详细信息。
我理解 the Tomcat documentation 如下:如果我有一个像 https://mywebpage.com
这样的网页,并且我有一个可以作为 https://mywebpage.com/pathToServlet/MyServlet
访问的 servlet,那么 Web 服务器已经完全处理 SSL 连接了吗?
是不是说我连servlet代码都不用改,用
就够了@WebServlet(urlPatterns = {"/MyServlet"})
public class MyServlet extends HttpServlet { ... }
这是正确的还是我误解了这个概念?
你是对的。 Tomcat 将为您处理 SSL 详细信息。
您的 servlet 将只接收请求,无论它是通过 HTTP 还是 HTTPS 到达,因为您在 servlet 中声明的 URL 模式在服务器上,无论服务器在什么域或协议上暴露于。例如,所有发送到这些 URL 的请求都将到达您的 servlet,假设您的 Tomcat 在这些域的端口 80 和 443 上侦听:
http://mywebpage.com/pathToServlet/MyServlet
https://mywebpage.com/pathToServlet/MyServlet
http://someotherdomain.com/pathToServlet/MyServlet
https://someotherdomain.com/pathToServlet/MyServlet
当您的 servlet 收到请求时,会有一些细节让您作为程序员能够确定请求到达的连接类型,例如 ServletRequest.isSecure() method, and some other SSL attributes (see section 3.9 in this spec,或者您拥有的任何版本).
显然,当 运行 Tomcat 在另一个 Web 服务器(如 Apache、Nginx、IIS 等)后面时,SSL 可能由 Apache、Nginx、IIS 处理,而不是由 Tomcat。在这种情况下,Web 服务器在向其传递请求时需要提供 Tomcat 额外信息,说明请求是通过 HTTPS 还是 HTTP 到达的,或者在请求中添加有关客户端调用的任何额外详细信息。