request.getServerPort 和 request.getLocalPort 區別

在獲取請求的應用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的時候被轉發了。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章