2012-12-05 177 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

您可以轉發請求從服務器端,然後在結束重定向到其他頁面