Node.js nodejs request.header dosnt存在
看到了很多关于从NodeJS获取客户端IP地址的教程、文章和stackoverflow问题。 几乎所有人都使用这个Node.js nodejs request.header dosnt存在,node.js,Node.js,看到了很多关于从NodeJS获取客户端IP地址的教程、文章和stackoverflow问题。 几乎所有人都使用这个request.header('x-forwarded-for') 我的NodeJS v0.8.7没有该request.header函数 typeof request.header返回未定义的 但是,我有request.headers,它是一个包含一些信息的对象: { host: '127.0.0.1:8000', connection: 'keep-alive', acce
request.header('x-forwarded-for')
我的NodeJS v0.8.7
没有该request.header函数
typeof request.header
返回未定义的
但是,我有request.headers,它是一个包含一些信息的对象:
{ host: '127.0.0.1:8000',
connection: 'keep-alive',
accept: '*/*',
'user-agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1',
'accept-encoding': 'gzip,deflate,sdch',
'accept-language': 'en-US,en;q=0.8',
'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' }
主机值似乎值得检查。在本地主机上运行node显然返回了127.0.0.1:8000
,但随后我尝试从同一网络上的上网本访问node.js站点,指向192.168.0.13(运行节点的桌面IP),得到了192.168.0.13:8000
。因此,它不是给我客户端IP,而是我使用哪个IP指向应用程序
然后我尝试了request.connection.remoteAddress
,因为它是在我找到的教程中命名的。从localhost运行得到了127.0.0.1
,从我的上网本运行得到了192.168.0.12
。所以成功了!192.168.0.12是我的上网本IP。
但是在我发现的教程和问题中,他们说正确的方法是第一种,这取决于代理是否是你的
那么,正确的方法是什么呢?为什么我看不到request.header?如果您使用的是express 3,您可以这样做:
req.ip
// => "127.0.0.1"
如果需要其他标题,可以使用以下内容:
req.get(field)
req.get('Content-Type');
// => "text/plain"
req.get('content-type');
// => "text/plain"
req.get('Something');
// => undefined
request.headers
如果您使用的是普通节点,请使用以下命令:
req.get(field)
req.get('Content-Type');
// => "text/plain"
req.get('content-type');
// => "text/plain"
req.get('Something');
// => undefined
request.headers