我做了两个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
请求。
- 用户在浏览器中打开 ProjectX 的网站
- 由于您的
response.sendRedirect
,它将以HTTP 302
响应进行响应。 - 用户的浏览器将获取响应的
Location
并打开它 - 因此,用户的浏览器与
ip:8443
建立TLS连接 - TLS通道打开后,会发送
GET /ProjectY/servletY?id=123 HTTP/1.1
- Project Y 将通过安全 TLS 通道进行响应。
观察
- 如果您在步骤 1 中通过普通
HTTP
调用 ProjectX,则302
响应不会被加密,有权访问您的连接的每个人都可以看到id
。 - 用户的浏览器将始终看到
id
,因为它需要遵循步骤 3 中的重定向。 - 用户将在地址栏中看到
id
,因为浏览器将显示其新位置。 - 调用 ProjectY 时,
id
受到保护,因为它仅通过 TLS 通道发送。