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

时间:2012-12-05 18:56:03

标签: 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
  • 我想将一些参数传递回webapp。 SAML响应中的参数。但我不希望用户在URL
  • 中看到它们

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

4 个答案:

答案 0 :(得分:1)

不,在这种情况下你不能使用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

答案 1 :(得分:0)

您可以从servlet(HttpConnection)连接到其他服务器并复制返回的数据。用户只能看到您的服务器。

另一种方法是返回一个HTML页面,它会在加载后自动发送POST表单。用户需要允许JS。

答案 2 :(得分:0)

您可以从服务器端转发请求,然后在结束时重定向到其他页面

答案 3 :(得分:0)

我找到了一种使用proguard隐藏内部类的概念来隐藏Java或Android项目中任何字符串的方法a class is my server side processing

相关问题