我有一个java servlet,它重定向到另一台服务器上的Web应用程序。
我想知道是否有办法隐藏查询字符串参数,因此地址栏中的客户端无法看到它们。
response.sendRedirect("http://www.mywebapp.com/login.html?parameter1=value1¶meter2=value2");
有没有办法强制sendRedirect POST到页面并隐藏查询字符串?
编辑:用例。
显然,sendRedirect()不是我想要的。处理这个问题的最佳方法是什么?
答案 0 :(得分:1)
不,在这种情况下你不能使用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
答案 1 :(得分:0)
您可以从servlet(HttpConnection
)连接到其他服务器并复制返回的数据。用户只能看到您的服务器。
另一种方法是返回一个HTML页面,它会在加载后自动发送POST表单。用户需要允许JS。
答案 2 :(得分:0)
您可以从服务器端转发请求,然后在结束时重定向到其他页面
答案 3 :(得分:0)
我找到了一种使用proguard隐藏内部类的概念来隐藏Java或Android项目中任何字符串的方法a class is my server side processing