有关 TLS 加密的查询



我做了两个J2EE应用程序,在ProjectX中的一个servlet中,通过https协议执行sendRedirect到ProjectY的另一个servlet。

代码是这样的

 response.sendRedirect("https://ip:8443/ProjectY/servletY?id=123");

在项目Y中,

SerletY 的代码为

PrintWriter pw = response.getWriter();
pw.print("Passed id is ID = " + request.getParameter("id"));

我的查询是 ,

由于使用 https 时通过网络发送的数据是理想加密的,为什么我在重定向到 ServletY 后能够看到浏览器的 url 作为

"https://ip:8443/ProjectY/servletY?id=123"

我已经使用 POST 方法隐藏了参数,但我的问题是,它实际上是在从 ProjectX(在 http 中)发送到 ProjectY(这是 https 调用)时加密数据吗?

感谢您的支持.!!

发生了什么

不涉及POST请求。

  1. 用户在浏览器中打开 ProjectX 的网站
  2. 由于您的response.sendRedirect,它将以HTTP 302响应进行响应。
  3. 用户的浏览器将获取响应的Location并打开它
  4. 因此,用户的浏览器与ip:8443建立TLS连接
  5. TLS通道打开后,会发送GET /ProjectY/servletY?id=123 HTTP/1.1
  6. Project Y 将通过安全 TLS 通道进行响应。

观察

  • 如果您在步骤 1 中通过普通HTTP调用 ProjectX,则302响应不会被加密,有权访问您的连接的每个人都可以看到id
  • 用户的浏览器将始终看到id,因为它需要遵循步骤 3 中的重定向。
  • 用户将在地址栏中看到id,因为浏览器将显示其新位置。
  • 调用 ProjectY 时,id受到保护,因为它仅通过 TLS 通道发送。

最新更新