當前位置:首頁 » 雲伺服器 » request伺服器地址

request伺服器地址

發布時間: 2022-10-11 16:44:12

㈠ 為什麼用request.getRemoteAddr獲得的全是127.0.0.1

獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。如果使用了反向代理軟體,用request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1或192.168.1.110,而並不是客戶端的真實IP。
經過代理以後,由於在客戶端和服務之間增加了中間層,因此伺服器無法直接拿到客戶端的 IP,伺服器端應用也無法直接通過轉發請求的地址返回給客戶端。但是在轉發請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的伺服器地址。當我們訪問index.jsp/時,其實並不是我們瀏覽器真正訪問到了伺服器上的index.jsp文件,而是先由代理伺服器去訪問index.jsp ,代理伺服器再將訪問到的結果返回給我們的瀏覽器,因為是代理伺服器去訪問index.jsp的,所以index.jsp中通過request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
於是可得出獲得客戶端真實IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
獲得客戶端真實IP地址的方法二:
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
可是,如果通過了多級反向代理的話,X-Forwarded-For的值並不止一個,而是一串IP值,究竟哪個才是真正的用戶端的真實IP呢?
答案是取X-Forwarded-For中第一個非unknown的有效IP字元串。如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用戶真實IP為: 192.168.1.110

㈡ request.getRemoteAddr();拿到的是伺服器的ip,還是我發送方主機的ip

我不太清楚你用的啥語言,但是你想,HTTP協議是屬於應用層協議,是在最上層的,你拿到的HTTP的內容,IP層的地址應該已經被剝離掉了,你從request裡面是不可能拿到對端的IP的。你自己看看HTTP的頭,它就沒有這個東西啊

㈢ 如何通過Request獲取用戶真實IP

問題引出:
<hr/>
在JSP里,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了 Apache,Nagix等反向代理軟體就不能獲取到客戶端的真實IP地址了。如果使用了反向代理軟體,用 request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1或 192.168.1.110,而並不是客戶端的真實IP。
經過代理以後,由於在客戶端和服務之間增加了中間層,因此伺服器無法直接拿到客戶端的 IP,伺服器端應用也無法直接通過轉發請求的地址返回給客戶端。但是在轉發請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端 IP地址和原來客戶端請求的伺服器地址。
舉例來說,當我們訪問口碑網首頁hangzhou.jsp時,其實並不是我們瀏覽器真正訪問到了伺服器上的hangzhou.jsp 文件,而是先由代理伺服器Nagix去訪問hagnzhou.jsp ,代理伺服器再將訪問到的結果返回給我們的瀏覽器,因為是代理伺服器去訪問hangzhou.jsp的,所以hangzhou.jsp中通過 request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
<hr/>
獲得客戶端真實IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
<hr/>

獲得客戶端真實IP地址的方法二

public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
<hr/>

㈣ <%=Request ("LOCAL_ADDR")%>是提取伺服器IP地址,如何提取客戶機的IP呢

取得客戶機的IP:
<%=request.servervariables("remote_host")%>

㈤ 微信小程序的request 中url 一定要用域名嗎 不能用HTTPS的伺服器IP地址嗎

首先根據微信小程序的要求,需要使用域名!必須使用HTTPS協議加密,並且符合以下ATS標准:
一、證書(要求):安全的證書公鑰演算法(RSA 2048 位以上或 ECC 256 位以上)、安全的證書簽名演算法(SHA2)、證書被 Apple ATS 信任(權威機構頒發)、證書與域名匹配(包含被檢測的域名)、證書時間有效(未過期)。
二、伺服器(要求):開啟 HTTPS、伺服器配置符合 ATS 規范、支持 TLS1.2、PFS(完全正向保密)、iOS 密碼套件支持。
三、您要知道的是使用可信機構機構Gworg SSL證書,成本考慮的情況下通常使用DV證書,然而他僅支持域名,然而IP是不可能的,就算是可信機構簽發了IP證書信任,但信任率也不會全面,而且公網IP也會變動,當然IP在那邊意味著伺服器也暴漏在眼前,IP簽發的成本不菲!

java 怎麼寫一個介面 讓他返回伺服器的動態IP地址和埠

我認為要解決此類問題,你應該有個伺服器a,a的IP是固定的,然後所有動態的伺服器b,c,d等,應該定時把自己身份信息(應當包括身份、埠等)上送給伺服器a。那麼在a的請求中就可以獲得IP,這樣伺服器a上就可以返回b,c,d的IP和埠了?希望這個思路可以幫到你。

熱點內容
視頻點播伺服器搭建區域網 發布:2025-01-12 15:46:44 瀏覽:87
unit長安豪華版有哪些配置 發布:2025-01-12 15:45:05 瀏覽:84
資料庫表的分區 發布:2025-01-12 15:39:29 瀏覽:368
u點家庭伺服器網關設置有什麼用 發布:2025-01-12 15:33:15 瀏覽:152
王者歸來java 發布:2025-01-12 15:27:13 瀏覽:67
安卓手機為什麼卡又發熱 發布:2025-01-12 15:23:18 瀏覽:570
如何驗證root密碼是否正確 發布:2025-01-12 15:23:15 瀏覽:591
socketftp伺服器端 發布:2025-01-12 15:19:55 瀏覽:235
胸椎腰椎壓縮性骨折 發布:2025-01-12 15:18:30 瀏覽:475
運營商清緩存 發布:2025-01-12 15:17:36 瀏覽:488