2012-08-22 462 views
0

我正嘗試構建一個Java EE應用程序,該應用程序提取某個會話cookie,將其作爲HTTP頭添加到請求中,然後將用戶轉發到第三方URL在請求中帶有這個頭部變量。如何將自定義頭變量添加到請求並重定向用戶

我使用this example作爲參考。

我已經實現了FakeHeadersRequestSimpleFilter但是不知道如何使用這個新的頭變量將請求重定向到不同的URL。我應該創建一個轉發請求的Servlet嗎?也許使用Apache HTTP客戶端?

有人可以幫我完成這個難題嗎?

回答

1

一旦你在服務器端幷包裝你的請求,使用RequestDispatcher.forward()與該包裝的請求。

您要轉發到的資源(任何Servlet,JSP)將「看到」新的標題。

不要試圖在客戶端重定向(HTTP 302),使客戶端發送自定義標頭AFAIK並不容易。

+0

嗨,看起來像RequestDispatcher期待的資源是相對於我的servlet位置,我想轉發請求到一個全新的URL。所以RequestDispatcher在這種情況下似乎不起作用。我錯過了什麼? – Joly

+0

您可能想澄清您是希望客戶端執行第二個請求,還是確定您的服務器是否執行了該請求。對於後一種情況,Apache http客戶端將是一個不錯的選擇,顯然,您可以使用該方法調整任何和所有標頭。但是它會成爲你的服務器,作爲對第三方服務器的請求的發起者。 – mgaert

+0

我很高興讓服務器處理這個問題。我會用http客戶端去... – Joly

0

無論您使用何種語言或框架,都無法重定向到設置了自定義標題的頁面。換句話說,無法觸發HTTP重定向並導致客戶端(瀏覽器)添加自定義標頭。

您正在設置響應的自定義標題,指示瀏覽器重定向,而不是重定向本身。

網站指示瀏覽器使用自定義標題發出HTTP請求的唯一方法是使用Javascript和XMLHttpRequest對象。

你能想到的最接近的是作爲代理。沒有重定向。

相關問題