在獲取請求的應用IP端口時,會有兩個方法可以用,但是兩個方法有時得到的值卻不一樣,具體原因是兩個方法獲取的端口來源不一樣。
getLocalPort獲取的是應用服務器的端口,即該應用的實際端口,無論請求經過了多少代理,轉發,getLocalPort只取最後的端口,也就是應用的端口。
getServerPort獲取的是URL請求的端口,比如你的請求時127.0.0.1:8080,應用服務器的端口是80,那麼getServerPort得到的端口是8080。而getLocalPort得到的是80
在具體的應用當中,跳轉後的端口getServerPort容易發生變化。如http://localhost:8080/demo/index.jsp跳轉到http://localhost:8081/demo/index.jsp
後,當前獲取的端口是8080(getServerPort獲取的是URL請求的端口),但頁面刷新後再次獲取的端口是8081.
以前也遇到過一個奇怪的問題,server端用getServerPort獲取端口號並以報文的形式返回,通過瀏覽器獲取的報文是沒問題的,端口號是8081,但是通過板子(arm等)獲取的報文端口號是80,it‘s weird,uuh。不過換成getLocalPort就OK了,用板子爲什麼會發生這種情況,沒有搞清楚。Google很多,可能是request的時候被轉發了。。。。