nodejs之獲取客戶端真實的ip地址+動態頁面中引用靜態路徑下的文件及圖片等內容


1、nodejs獲取客戶端真實的IP地址:

    在一般的管理網站中,嘗嘗會需要將用戶的一些操作記錄下來,並記住是哪個用戶進行操作的,這時需要用戶的ip地址,但是往往當這些應用部署在服務器上后,都使用了ngix等

代理,在用戶訪問的時候,就需要透過代理查看用戶的真實IP地址,以下是nodejs獲取客戶端真實IP的代碼:

//獲取客戶端真實ip;
function getClientIp(req) {
    var ipAddress;
    var forwardedIpsStr = req.headers['X-Forwarded-For'];//判斷是否有反向代理頭信息
    if (forwardedIpsStr) {//如果有,則將頭信息中第一個地址拿出,該地址就是真實的客戶端IP;
        var forwardedIps = forwardedIpsStr.split(',');
        ipAddress = forwardedIps[0];
    }
    if (!ipAddress) {//如果沒有直接獲取IP;
        ipAddress = req.connection.remoteAddress;
    }
    return ipAddress;
};

另外,在網上看到別人有這么寫的:

//代碼,第一段判斷是否有反向代理IP(頭信息:x-forwarded-for),在判斷connection的遠程IP,以及后端的socket的IP。
    function getClientIp(req) {
        return req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress;
    };

2、nodejs中動態頁面引用靜態路徑下的內容

   在動態頁面中引用靜態引入路徑下的內容(如圖片,css文件時),注意路徑的寫法:

   例如:我在error.html中引用“public/images/”下的error.png圖片,需要幾個步驟:

   工程的結構圖:

  第一步:app.js中:

app.use(express.static(path.join(__dirname, 'public')));//表示動態頁面可引用public路徑下的靜態信息

 第二步:error.html中:

  在style中,引用背景圖片時,路徑前就不能再加“public/”,只能為:“images/error.png”, 因為在app.js中已經設置了動態頁面只能引用public下的靜態內容,且它默認就在public路徑下,只需要寫從public的下級目錄開始寫就可以了。

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=no" />
 6     <title>統一支付</title>
 7     <style>
 8         .error-404{background-color:#EDEDF0;}
 9         section{display: block;}
10         .clearfix{zoom:1;}
11         .module-error{margin-top:182px;}
12         .module-error .error-main{  margin: 0 auto;width: 420px;}
13         .module-error .label{float: left;width: 160px;height: 151px;background: url("images/error.png") 0 0 no-repeat;}//默認已經在public路徑下,盡管改代碼在IDE中報錯(可以不用管)
14         .module-error .info{  margin-left: 182px;line-height: 1.8;}
15         .module-error .title{color: #666;font-size: 14px;}
16         .module-error .reason{margin: 8px 0 18px 0;color: #666;font-size: 12px;}
17     </style>
18 </head>
19 <body class="error-404">
20 <div id="doc_main">
21     <section class="bd clearfix">
22         <div class="module-error">
23             <div class="error-main clearfix">
24                 <div class="label"></div>
25                 <div class="info">
26                     <h3 class="title">啊哦,你所訪問的頁面不存在了。</h3>
27                     <div class="reason">
28                         <p>可能的原因:</p>
29                         <p>1.在地址欄中輸入了錯誤的地址。</p>
30                         <p>2.你點擊的某個鏈接已過期。</p>
31                     </div>
32                     <div class="oper">
33                         <p><a href="/">回到首頁&gt;</a></p>
34                         <p class="reason">或10s后將自動跳轉到首頁</p>
35                     </div>
36                 </div>
37             </div>
38         </div>
39     </section>
40 </div>
41 <script>
42     setTimeout("window.location.href='/'",10000);
43 </script>
44 
45 </body>
46 </html>
error.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM