2016-11-18 124 views
0

我服務的靜態文件複製到客戶要求通過:快車 - 訪問客戶端的IP時的index.html請求

app.use(express.static('public')); 

我想訪問的index.html的請求的客戶端的IP地址(位於公用文件夾中)。是否可以通過自定義express.static方法來完成此操作?如果是這樣,怎麼樣?如果不是,那麼做到這一點的最好方法是什麼?

編輯:我需要這樣做作爲回退,以防客戶端不允許/支持HTML5 Geolocation API。 IP地址被髮送到接收經度和緯度位置的1個API。之後,經度和緯度被髮送到第二個API,以接收對於我正在構建的應用程序而言至關重要的數據。這些數據將被傳送給客戶。

+0

的可能的複製[如何只使用JavaScript來獲取客戶端的IP地址?(http://stackoverflow.com/questions/391979/how-to-get-clients-ip-address-using-javascript-只) – jmargolisvt

+0

@jmargolisvt絕對不是重複的。我需要獲取請求index.html文件的客戶端的IP地址以向第三方API發出請求,並將該API的響應數據與index.html文件一起提供。傳遞給API的地理位置需要IP地址。這是客戶端不允許使用html5地理定位API的情況下的回退。 –

+0

@Ignat如果你說你想要將ip或位置注入到index.html頁面,那麼你在那個時候沒有提供靜態頁面。您需要一個具有佔位符的模板,以便將信息發送到哪裏。 – Ryan

回答

1

您可以使用req.ip獲得遠程IP地址:

req.ip 
// => "127.0.0.1" 

從文檔:http://expressjs.com/en/api.html#req.ip

剛剛創建的靜態路由之前處理請求的中間件,並且在通話next()結束。

app.use(function (req, res, next) { 
    console.log(req.ip); 
    next(); 
}); 

app.use(express.static('public')); 
+0

是的,這確實是訪問IP地址的方式。問題是,如果你只有'app.use(express.static('public'));'',你如何訪問它? –

+0

查看最新回覆。 – kevintechie