2012-02-01 35 views
9

Mã của tôi là như sau:Làm thế nào để ghi đè lên tiêu đề http "Máy chủ" trong một HttpURLConnection?

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

Nhưng khi tôi đăng các gói đi với tcpdump http-header "Host" là 1.0.0.25.

Có thể do tiêu đề http "Máy chủ" bị ghi đè ở giai đoạn sau của quy trình gửi, nếu có thì làm cách nào để tránh hành vi này.

+1

Tại sao bạn không sử dụng hostname trong URL? –

+0

Tôi sử dụng iptables để thay đổi địa chỉ ip nguồn của gói gửi đi, iptables sử dụng địa chỉ ip giả 1.0.0.25 để tìm các gói phải được thay đổi. Yêu cầu dịch vụ từ xa là tên miền chính xác để thực hiện dịch vụ lưu trữ ảo dựa trên tên. – Alex

+0

Bản sao của http://stackoverflow.com/questions/7648872/can-i-override-the-host-header-where-using-javas-httpurlconnection-class – Gray

Trả lời

20

Duplicate question.

Các chú thích cuối cùng giải quyết vấn đề của tôi:

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

Hoặc ít VM khởi động:

-Dsun.net.http.allowRestrictedHeaders=true 
Các vấn đề liên quan