我有一个 java servlet,它正在重定向到不同服务器上的 Web 应用程序。
我想知道是否有办法隐藏查询字符串参数,以便客户端在地址栏中看不到它们。
response.sendRedirect("http://www.mywebapp.com/login.html?parameter1=value1¶meter2=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¶meter2=value2
浏览器解释这一点并将用户指向该位置。
有件事告诉我(可能是 login.html
名称和两个参数)您希望在某些网站上自动登录用户)。不要这样做,发送用户名/密码(使用 GET 参数和内部 POST)确实不安全。
在不太了解您的用例的情况下,从 servlet 调用 http://www.mywebapp.com/login.html
、解析响应并将其返回给用户可能是最好的解决方案(所以他永远不会在浏览器中真正看到 mywebapp
。
关于java - 在response.sendRedirect中隐藏url中的查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730410/