2012-02-01 15 views
9

Il mio codice è simile al seguente:Come sovrascrivere l'http-header "Host" in un HttpURLConnection?

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

Ma quando accedo i pacchetti in uscita con tcpdump il http-header "Host" è 1.0.0.25.

Potrebbe essere che l'http-header "Host" venga sovrascritta in una fase successiva del processo di invio, se sì come posso evitare questo comportamento.

+1

Perché non utilizzare il nome host nell'URL? –

+0

Uso iptables per modificare l'indirizzo ip sorgente dei pacchetti in uscita, iptables usa l'indirizzo ip falso 1.0.0.25 per trovare pacchetti che devono essere modificati. Il servizio remoto ha bisogno del nome di dominio corretto per fare un servizio di hosting virtuale basato sul nome. – Alex

+0

Duplicato di http://stackoverflow.com/questions/7648872/can-i-override-the-host-header-where-using-javas-httpurlconnection-class – Gray

risposta

20

Duplicate question.

L'ultimo commento Ha risolto il problema:

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

O VM startup:

-Dsun.net.http.allowRestrictedHeaders=true 
Problemi correlati