2012-12-05 171 views
0

我有一个Java servlet重定向到另一台服务器上的Web应用程序。从url中隐藏查询字符串参数response.sendRedirect

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

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

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

编辑:用例。

  • 用户进入到http://www.mywebapp.com
  • 他们被自动重定向到我的Servlet过滤器
  • 的Servlet处理SSO使用SAML
  • 身份提供者一旦临危SAML响应回来了,我现在重定向经过身份验证的用户返回mywebapp.com
  • 我想将一些参数传回给webapp。来自SAML响应的参数。但我不希望用户在URL中看到他们

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

回答

0

你可以从你的servlet连接到另一个服务器(HttpConnection)并复制返回的数据,用户将只能看到你的服务器

另一种方法是返回一个HTML页面,加载后自动发送一个POST表单。允许JS。

1

不,您不能在这种情况下使用POST。当调用sendRedirect()这是你送什么回客户端:

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

浏览器解释这并指出用户到该位置。

东西告诉我(也许login.html名称和两个参数),你想在某些网站上自动登录用户)。不要这样,发送用户名/密码(都使用GET参数和POST内)是真的不安全。

不知道关于你的使用情况太多,它可能叫http://www.mywebapp.com/login.html从你的servlet,解析响应并返回给用户(所以他永远不会真正看到mywebapp在其浏览器中的最佳解决方案。

+0

感谢您的答复。我用一个更具体的用例编辑了我的初始文章。对不起,不清楚。 – user1873196

0

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