java - 在response.sendRedirect中隐藏url中的查询字符串参数

标签 java servlets servlet-filters

我有一个 java servlet,它正在重定向到不同服务器上的 Web 应用程序。

我想知道是否有办法隐藏查询字符串参数,以便客户端在地址栏中看不到它们。

response.sendRedirect("http://www.mywebapp.com/login.html?parameter1=value1&parameter2=value2");

有没有办法强制 sendRedirect POST 到页面并隐藏查询字符串?

编辑:用例。

  • 用户转到 http://www.mywebapp.com
  • 它们会自动重定向到我的 servlet 过滤器
  • servlet 使用 SAML 处理到身份提供商的 SSO
  • 收到 SAML 响应后,我会将现已通过身份验证的用户重定向回 mywebapp.com
  • 我想将一些参数传递回网络应用程序。来自 SAML 响应的参数。但我不希望用户在 URL 中看到它们

显然,sendRedirect() 不是我想要的。处理这个问题的最佳方法是什么?

最佳答案

不,在这种情况下您不能使用 POST。调用 sendRedirect() 时,您将发送回客户端:

HTTP/1.1 302 Found
Location: http://www.mywebapp.com/login.html?parameter1=value1&parameter2=value2

浏览器解释这一点并将用户指向该位置。

有件事告诉我(可能是 login.html 名称和两个参数)您希望在某些网站上自动登录用户)。不要这样做,发送用户名/密码(使用 GET 参数和内部 POST)确实不安全。

在不太了解您的用例的情况下,从 servlet 调用 http://www.mywebapp.com/login.html 、解析响应并将其返回给用户可能是最好的解决方案(所以他永远不会在浏览器中真正看到 mywebapp

关于java - 在response.sendRedirect中隐藏url中的查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730410/

相关文章:

maven - WebFilter Java8 和 Maven

java - 将 web.xml 中的过滤器配置转换为 spring.xml

java - 重新审视 Jon Skeet 在他的文章中发布的 Java 中的按值传递语义

java - 如何使用 Servlet 处理 POST 响应

java - Web 容器中的 Servlet 实例

java - 仅将 tomcat 7 配置为 servlet 容器

java - 当其他人登录时(从另一台计算机)用户记录的更改

java - 在 Java 中从给定的 XML 创建 OpenSAML 断言

java - 在排序树集中存储对象并更新它

java - 生成 boolean 流