nodejs和JavaScript useragent行为

我怎样才能让JavaScript从原始的http请求传递useragent信息(IP地址)? 当我运行下面的代码时,我总是收到服务器IP(例如1.2.3.4)地址,就好像它正在发出http请求。

的index.html

<!DOCTYPE html> <html> <title>ContactForm</title> <body> <h1>Contact Form</h1> <form action="http://1.2.3.4:8080/myaction" method="post" target="_blank"> Business Name <input type="text" name="businessname"><br> User Agent: <input type="text" id="UserAgent" name="useragent"> <input type="submit" value="Submit"> </form>` 

node.js代码

 app.use(bodyParser.urlencoded({ extended: true })); app.post('/myaction', function(req, res) { res.send('Thank you for your inquiry, someone will contact you shorty.'); app.get('/', function(request, response){ response.sendFile('/home/ubuntu/index.html'); }); fs.appendFile(timeEntry+'submission.txt', 'useragent='+JSON.stringify(req.headers)+' ', function(err) { if (!err) { console.log('Wrote agent headers info to file.txt'); } else { throw err; } }); app.listen(8080, function() { console.log('Server running at http://127.0.0.1:8080/'); });` 

以下为我工作:

 app.post('/myaction', function(req, res) { console.log(req.ip) res.send('Thank you for your inquiry, someone will contact you shorty.'); }); 

输出:

 ::ffff:17.###.##.## 

值得一提的是,在我的设置中涉及两台独立的机器(单独的IP),只有在这种情况下,用户代理IP与服务器IP地址不同。

如果浏览器(useragent)和节点服务器是同一台机器,显然你会得到非常相同的IP在html action="http://17.###.##.##:7777/myaction"

下面修改“server.js”文件的内容:

 var express = require('express'), path = require('path'), fs = require('fs'), bodyParser = require('body-parser') var app = express(); app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded app.use(express.static(path.join(__dirname, 'server/public'))); app.post('/myaction', function(req, res) { console.log(req.ip) res.send('Thank you for your inquiry, someone will contact you shorty.'); fs.appendFile('submission.txt', 'useragent='+JSON.stringify(req.headers)+' ', function(err) { if (!err) { console.log('Wrote agent headers info to file.txt'); } else { throw err; } }); }); app.get('/', function(request, response){ console.log(request.headers) response.sendFile('/index.html'); }); app.listen(7777, function() { console.log('Server running at http://127.0.0.1:7777/'); }); 

req.headers结果数据(这里没有用户代理IP,因为它不在req.headers ):

 useragent={"host":"17.###.##.##:7777","content-type":"application/x-www-form-urlencoded","origin":"http://localhost:7777","content-length":"24","connection":"keep-alive","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9","referer":"http://localhost:7777/","accept-language":"en-us","accept-encoding":"gzip, deflate"}