㈠ java的servlet 不通過request能獲取到伺服器IP與提供的埠號嗎。
這個可不是的,request相當於客戶端,瀏覽器端的請求,是通過request的構造方法進行表單的提交,然後再分裝到實體對象中,再調用業務層濟寧處理數據,然後後面再進行操作了
㈡ 如何用Request對象獲得機器的環境參數
下圖表是ServerVariables 集合比較常用的一些參數: ALL_HTTP客戶端發送的所有 HTTP 標題文件。CONTENT_LENGTH客戶端發出內容的長度。 CONTENT_TYPE內容的數據類型。如:"text/html"。同附加信息 的查詢一起使用,如 HTTP 查詢 GET、POST 和 PUT。LOCAL_ADDR返回接受請求的伺服器地址。如果在綁定多 個 IP 地址的多宿主機器上查找請求所使用的地址 時,這條變數非常重要。LOGON_USER用戶登錄 Windows NT 的帳號QUERY_STRING查詢HTTP 請求中問號(?)後的信息。REMOTE_ADDR發出請求的遠程主機 (client) 的 IP 地址。 REMOTE_HOST發出請求的主機 (client) 名稱。如果伺服器無此 信息,它將設置為空的 MOTE_ADDR 變數。REQUEST_METHOD該方法用於提出請求。相當於用於 HTTP 的 GET、HEAD、POST等 等。SERVER_NAME出現在自引用 URL 中的伺服器主機名、DNS 化名 或 IP 地址。SERVER_PORT發送請求的埠號。HTTP_ACCEPT_LANGUAGE機器使用的語言環境ServerVariables集合對象的語法是什麼? 此集合對象在程序中的具體語法如下: Request.ServerVariables ( 伺服器環境變數 ) <HTML><HEAD><TITLE>取得客戶端的環境參數</TITLE></HEAD><BODY><%Dim Language '用以儲存Client端環境用的語言Response.Write "本地IP地址:" & Request.ServerVariables ( "LOCAL_ADDR" )Response.Write "<HR>"Response.Write "伺服器IP地址:" & Request.ServerVariables ( "REMOTE_ADDR" )Language = Request.ServerVariables ( "HTTP_ACCEPT_LANGUAGE" )Response.Write " <HR> "Select Case Language Case "zh-tw" : Response.Write "您使用的是繁體中文" Case "zh-cn" : Response.Write "您使用的是簡體中文"End Select%><HR></BODY></HTML>
㈢ 為什麼用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
㈣ java request 如何取到發送請求的地址是什麼
request對象通過以下方法來獲取請求路徑,如下所示:
String getServerName():獲取伺服器名,localhost;
String getServerPort():獲取伺服器埠號,8080;
String getContextPath():獲取項目名,/Example;
String getServletPath():獲取Servlet路徑,/AServlet;
String getQueryString():獲取參數部分,即問號後面的部分:username=zhangsan
String getRequestURI():獲取請求URI,等於項目名+Servlet路徑:/Example/AServlet
String getRequestURL():獲取請求URL,等於不包含參數的整個請求路徑:http://localhost:8080/Example/AServlet 。
㈤ request.getRemoteAddr();拿到的是伺服器的ip,還是我發送方主機的ip
我不太清楚你用的啥語言,但是你想,HTTP協議是屬於應用層協議,是在最上層的,你拿到的HTTP的內容,IP層的地址應該已經被剝離掉了,你從request裡面是不可能拿到對端的IP的。你自己看看HTTP的頭,它就沒有這個東西啊
㈥ 微信小程序的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簽發的成本不菲!
㈦ SIP 消息中的Request-URL 域名與網路地址有什麼區別
一般request-uri中會發送給域名或者一個地址,一般發給域名的時候都會配置代理伺服器,其實你就把目標想成有域名也有一個地址就好了
㈧ <%=Request ("LOCAL_ADDR")%>是提取伺服器IP地址,如何提取客戶機的IP呢
取得客戶機的IP:
<%=request.servervariables("remote_host")%>
㈨ Request.ServerVariables
Request.ServerVariables["Url"]
返回伺服器地址
Request.ServerVariables["Path_Info"]
客戶端提供的路徑信息
Request.ServerVariables["Appl_Physical_Path"]
與應用程序元資料庫路徑相應的物理路徑
Request.ServerVariables["Path_Translated"]
通過由虛擬至物理的映射後得到的路徑
Request.ServerVariables["Script_Name"]
執行腳本的名稱
Request.ServerVariables["Query_String"]
查詢字元串內容
Request.ServerVariables["Http_Referer"]
請求的字元串內容
Request.ServerVariables["Server_Port"]
接受請求的伺服器埠號
Request.ServerVariables["Remote_Addr"]
發出請求的遠程主機的IP地址
Request.ServerVariables["Remote_Host"]
發出請求的遠程主機名稱
Request.ServerVariables["Local_Addr"]
返回接受請求的伺服器地址
Request.ServerVariables["Http_Host"]
返回伺服器地址
Request.ServerVariables["Server_Name"]
伺服器的主機名、DNS地址或IP地址
Request.ServerVariables["Request_Method"]
提出請求的方法比如GET、HEAD、POST等等
Request.ServerVariables["Server_Port_Secure"]
如果接受請求的伺服器埠為安全埠時,則為1,否則為0
Request.ServerVariables["Server_Protocol"]
伺服器使用的協議的名稱和版本
Request.ServerVariables["Server_Software"]
應答請求並運行網關的伺服器軟體的名稱和版本
Request.ServerVariables["All_Http"]
客戶端發送的所有HTTP標頭,前綴HTTP_
Request.ServerVariables["All_Raw"]
客戶端發送的所有HTTP標頭,其結果和客戶端發送時一樣,沒有前綴HTTP_
Request.ServerVariables["Appl_MD_Path"]
應用程序的元資料庫路徑
Request.ServerVariables["Content_Length"]
客戶端發出內容的長度
Request.ServerVariables["Https"]
如果請求穿過安全通道(SSL),則返回ON如果請求來自非安全通道,則返回OFF
Request.ServerVariables["Instance_ID"]
IIS實例的ID號
Request.ServerVariables["Instance_Meta_Path"]
響應請求的IIS實例的元資料庫路徑
Request.ServerVariables["Http_Accept_Encoding"]
返回內容如:gzip,deflate
Request.ServerVariables["Http_Accept_Language"]
返回內容如:en-us
Request.ServerVariables["Http_Connection"]
返回內容:Keep-Alive
Request.ServerVariables["Http_Cookie"]
返回內容:Cookie的值
Request.ServerVariables["Http_User_Agent"]
返回內容:Mozilla/4.0[compatible;MSIE6.0;WindowsNT5.1;SV1]
Request.ServerVariables["Https_Keysize"]
安全套接字層連接關鍵字的位數,如128
Request.ServerVariables["Https_Secretkeysize"]
伺服器驗證私人關鍵字的位數如1024
Request.ServerVariables["Https_Server_Issuer"]
伺服器證書的發行者欄位
Request.ServerVariables["Https_Server_Subject"]
伺服器證書的主題欄位
Request.ServerVariables["Auth_Password"]
當使用基本驗證模式時,客戶在密碼對話框中輸入的密碼
Request.ServerVariables["Auth_Type"]
是用戶訪問受保護的腳本時,伺服器用於檢驗用戶的驗證方法
Request.ServerVariables["Auth_User"]
代證的用戶名
Request.ServerVariables["Cert_Cookie"]
唯一的客戶證書ID號
Request.ServerVariables["Cert_Flag"]
客戶證書標志,如有客戶端證書,則bit0為0如果客戶端證書驗證無效,bit1被設置為1
Request.ServerVariables["Cert_Issuer"]
用戶證書中的發行者欄位
Request.ServerVariables["Cert_Keysize"]
安全套接字層連接關鍵字的位數,如128
Request.ServerVariables["Cert_Secretkeysize"]
伺服器驗證私人關鍵字的位數如1024
Request.ServerVariables["Cert_Serialnumber"]
客戶證書的序列號欄位
Request.ServerVariables["Cert_Server_Issuer"]
伺服器證書的發行者欄位
Request.ServerVariables["Cert_Server_Subject"]
伺服器證書的主題欄位
Request.ServerVariables["Cert_Subject"]
客戶端證書的主題欄位
Request.ServerVariables["Content_Type"]
客戶發送的form內容或HTTPPUT的數據類型
㈩ wx.request的介面應該放在伺服器的哪個目錄
1)網路請求與域名的合法性
微信小程序包括四種類型的網路請求:
普通HTTPS請求(wx.request)
上傳文件(wx.uploadFile)
下載文件(wx.downloadFile)
WebSocket通信(wx.connectSocket)
關於「URL 域名不合法,請在後台配置後重試」的錯誤
小程序只允許與合法配置的域名進行數據交互
進入微信公共平台=>設置=>開發設置:設置需要交互的域名
2)對於介面調用http和https的問題
對於這一個問題,在之前來說,微信公共平台支持使用http測試項目,但是正式發布需要使用https的域名,
但是前幾天看到了微信公眾平台發的一則公告:
應該是要封殺http方式調用了,公告鏈接:為保證數據傳輸安全,提高業務安全性,公眾平台將不再支持HTTP方式調用(時間2017年9月21日)
3)關於method以及data數據
微信小程序多地方都嚴格區分大小寫,所以要注意method的value需要為大寫,request的默認的超時時間都是60s;
對於data數據,上次我們從介面中拿到的數據是json格式的,最終發送給伺服器的數據是String類型,如果傳入的 data 不是 String 類型,會被轉換成 String 。
文檔中提供的轉換規則如下:
對於header['content-type']為application/json的數據,會對數據進行 JSON 序列化
對於header['content-type']為application/x-www-form-urlencoded的數據,會將數據轉換成 query string;
(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
這個工作在我們設置header頭為application/x-www-form-urlencoded後,在後面為我們進行。
4)關於GET和POST請求
根據HTTP的規范,get是用與信息獲取,post表示可能修改伺服器的資源的請求
對於post請求:'application/json'用在get請求中沒有問題,但是用在POST請求中不好使了,content-type 默認為 'application/json';
所以使用post請求時,將content-type設置為application/x-www-form-urlencoded