2011-08-05 44 views
3

是否有可能直接連接到互聯網而不使用代理。直接連接到互聯網而無需代理

考慮一下我的組織擁有代理服務器的情況,並使用Java代理類中給出的DIRECT選項。

SocketAddress addr = new 
InetSocketAddress("webcache.mydomain.com", 8080); 
Proxy proxy = new Proxy(Proxy.Type.DIRECT, addr); 

如果你去的文檔它規定 DIRECT表示直接連接,或代理的缺席。

這與其表現方式完全相同。當我使用這個選項時,我不必提供任何代理詳細信息,並且我可以從互聯網上訪問內容。

我有三個問題

  1. 按我的理解,如果一個組織有一個代理,所有的網絡流量 應該得到通過代理路由。沒有人應該能夠 直接訪問網絡?
  2. 我也注意到,如果我從IE刪除Proxy細節,我不能 接入網絡:-(如何Java的仍然這樣做?
  3. 如果在任何組織中,你可以用代理服務器和 直接訪問這兩個,請問防火牆阻止某些網站?如何在 防火牆甚至提前工作?

感謝。

+0

問題1和3更適合Serverfault。 – Jacob

+0

所有這個問題的某些部分可能適合服務器故障,但我也有興趣瞭解Java API如何工作。服務器故障時永遠不會回答該部分。我請求你在SO保留這個問題。謝謝。 – Geek

+0

這是一個社區決定。但是,大多數問題中有2/3是問題;) – Jacob

回答

0

如果您的組織有代理服務器,則並非所有網絡流量都通過代理服務器。您仍然可以繼續並建立與Internet的直接連接。大多數組織將阻止直接連接並強制您使用代理。有時他們可能會允許您使用受限直接連接,該連接允許某些URL並拒絕其他URL。

0

2)你可能在任何系統屬性已設置代理。如果您使用任何IDE,請檢查IDE的代理設置。

2
Proxy proxy = new Proxy(Proxy.Type.DIRECT, addr); 

不是創建直接(無代理)代理指令的正確方法。你應該做

Proxy proxy = Proxy.NO_PROXY 

內部實現Socket類和HttpURLConnection的檢查proxy == Proxy.NO_PROXY(注: 「==」,而不是 「equals()方法」!)。它不檢查是否proxy.getType() == Proxy.Type.DIRECT

+0

感謝您的更正,但DIRECT類型如何忽略組織代理並與外部世界建立直接連接。爲什麼瀏覽器無法做到這一點。 – Geek

+0

新代理(Proxy.Type.DIRECT)不是直接(無代理)。這可能是Java開發人員的一個錯誤或疏忽,但它就是這樣。用Proxy.NO_PROXY試試你的代碼,看看會發生什麼。 – pap