2012-02-01 32 views
9

我的代碼是這樣的:如何在HttpURLConnection中覆蓋http-header「主機」?

URL url = new URL("1.0.0.25/otfg/services"); 
HttpURLConnection cnx = url.openConnection(); 
cnx.setRequestProperty("Host", "example.org"); 

但是,當我登錄傳出包使用tcpdump的HTTP標頭「host」是1.0.0.25。

是否可以在發送過程的後期重寫http-header「Host」,如果是的話,我該如何避免這種行爲。

+1

你爲什麼不使用主機名的網址是什麼? – 2012-02-01 14:00:57

+0

我使用iptables來更改傳出包的源IP地址,iptables使用假IP地址1.0.0.25來查找必須更改的包。遠程服務需要使用正確的域名來完成基於名稱的虛擬主機服務。 – Alex 2012-02-01 14:28:53

+0

重複http://stackoverflow.com/questions/7648872/can-i-override-the-host-header-where-using-javas-httpurlconnection-class – Gray 2012-02-01 15:01:37

回答

20

Duplicate question.

的最後註釋解決我的問題:

System.setProperty("sun.net.http.allowRestrictedHeaders", "true") 

或者在VM啓動:

-Dsun.net.http.allowRestrictedHeaders=true