request-ip

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 常用JavaScript包
软件类型 开源软件
地区 不详
投 递 者 邵弘伟
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

request-ip

A tiny Node.js module for retrieving a request's IP address.

Installation

npm install request-ip --save

Getting Started

const requestIp = require('request-ip');

// inside middleware handler
const ipMiddleware = function(req, res, next) {
    const clientIp = requestIp.getClientIp(req); 
    next();
};

// on localhost you'll see 127.0.0.1 if you're using IPv4 
// or ::1, ::ffff:127.0.0.1 if you're using IPv6

As Connect Middleware

const requestIp = require('request-ip');
app.use(requestIp.mw())

app.use(function(req, res) {
    const ip = req.clientIp;
    res.end(ip);
});

To see a full working code for the middleware, check out the examples folder.

The connect-middleware also supports retrieving the ip address under a custom attribute name, which also works as a container for any future settings.

How It Works

It looks for specific headers in the request and falls back to some defaults if they do not exist.

The user ip is determined by the following order:

  1. X-Client-IP
  2. X-Forwarded-For (Header may return multiple IP addresses in the format: "client IP, proxy 1 IP, proxy 2 IP", so we take the the first one.)
  3. CF-Connecting-IP (Cloudflare)
  4. Fastly-Client-Ip (Fastly CDN and Firebase hosting header when forwared to a cloud function)
  5. True-Client-Ip (Akamai and Cloudflare)
  6. X-Real-IP (Nginx proxy/FastCGI)
  7. X-Cluster-Client-IP (Rackspace LB, Riverbed Stingray)
  8. X-Forwarded, Forwarded-For and Forwarded (Variations of #2)
  9. req.connection.remoteAddress
  10. req.socket.remoteAddress
  11. req.connection.socket.remoteAddress
  12. req.info.remoteAddress

If an IP address cannot be found, it will return null.

Samples Use Cases

  • Getting a user's IP for geolocation.

Running the Tests

Make sure you have the necessary dev dependencies needed to run the tests:

npm install

Run the integration tests

npm test

Release Notes

See the wonderful changelog

To easily generate a new changelog, install github-changelog-generator then run npm run changelog.

Contributors

  • Thanks to @osherx for adding the connect-middleware.
  • Thanks to @raunc for adding Squid proxy support.
  • Thanks to @fluxsauce for adding CF-Connecting-IP, True-Client-IP, and ES6 support.
  • Thanks to @vishalvijay for adding Fastly/Firebase hosting support.

License

The MIT License (MIT) - 2018

  • public String getIpAddr(HttpServletRequest request) throws Exception { String ipAddress = null; String[] header = {"x-forwarded-for","Proxy-Client-IP","WL-Proxy-Client-IP"}; for (int i = 0

  • 通过request 获取请求方的地址,使用的是request.getRemoteAddr();这个方法。但是这个请求方通过使用反向代理服务器修改请求的ip地址怎么办 。 使用反向代理服务器时,访问服务器是反向代理服务器访问的,反向代理服务器再将得到的结果返回给真实的请求方。所以这种情况直接使用request.getRemoteAddr();这个方法得到的是代理工具的ip地址。并不是真正的请求方的地

  • 当我们后台api开发者,与前端联调时,前端无法通过ip或者127.0.0.1 进行访问你的接口时,遇到的问题 修改如下 工程路径\.vs\config 文件夹下面的applicationhost.config 这个文件,找到site 那个节点,修改bindings 属性,这其实给在iis中编辑绑定是一样的意思。 <site name="DXMeteorological.Web" id="

  • 注意:如果是用ThinkPHP框架的request->ip获取的IP地址是能够被类似X-Forwarded-For Header这样的火狐插件修改的,即使是127.0.0.1这样的本地地址也能够修改。 如何获取用户真实IP地址:从$_SERVER[‘REMOTE_ADDR’]这个超全局变量里面获取。 但通过这种方式获取的用户IP不一定就是最真实的,也许用户用了代理IP,从这里面获取的IP就有可能是

  •  luch-requdst是什么? uniapp自带网络请求request功能不满足开发使用,luch-request基于 Promise 对象实现更简单的 request 使用方式,支持请求和响应拦截,luch-request功能类似axios,本文在vue-cli3构建的项目中使用. luch-request (quanzhan.co) 一.luch-request使用大全         1

  • 获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。   经过代理以后,由于在客户端和

  • laravel中$request可用的一些方法小结 1,请求方法的获取 $method = $request->method(); 2,检测请求方法 $res = $request->isMethod('post') 3,获取请求的路径 $path = $request->path() 4,获取完整的url $url = $request->url(); 5,获取请求的ip $ip = $requ

  • 前端小白,以下内容为个人整理,原文请参考https://blog.csdn.net/r657225738/article/details/110549308 一、luch-request是什么? uniapp自带网络请求request功能不满足开发使用,luch-request基于 Promise 对象实现更简单的 request 使用方式,支持请求和响应拦截,luch-request功能类似ax

  • 下面是获取方式,作为笔记: public class IPUtil { /** * 获取request的客户端IP地址 * * @param request * @return */ private static String getIpAdrress(HttpServletRequest request) { String ip = request.getHeade

  • 一、获取代理ip的网站 快代理 西祠代理 www.goubanjia.com 二、代理ip使用 #代理ip import requests headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.12

  • Java 通过Request请求获取IP地址 项目需要将不同省份的用户,展示不同内容,所以需要通过Request请求获取IP地址。 先来贴代码, 如果你要在生产环境使用就直接拿去用吧,我这边已经上线了。 代码 public class IpAddressUtil { /** * 获取Ip地址 * @param request * @return */

  • 获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 正向代理是客户端(google.com),反向代理是服务器(baidu.com)。 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://w

  • 在laravel中,下面两种方法都能获得用户IP: // request获取ip $request->getClientIp(); $request->ip(); 这是在没有代理的情况下,但是有时候我们的业务使用了反向代理、负载均衡、cdn加速等等,上述两种方法就无法获取到真实ip,也就没法满足我们的业务线 举例:公司网络使用拨号或者代理模式访问我们的业务系统此时$request->getC

  • 获取request请求的真实ip地址 package com.yawooai.util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servl

  • 根据以往传统后台经验,获取api请求的客户端ip应该很简单才对,直接 Request.IP 不就可以了么,然后根据这个思路找一下 nestjs里面的request对象,还真有 .ip(get) 的方法,但高兴得有点早,使用起来发现获取到的 ip 地址不是null 就是 127.0.0.1 后面还是找下现成的包,发现可以用 request-ip 这个包来实现真实ip的获取 安装request-ip

  • import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class IpUtil { private static final Logger logger = LoggerFactory.getLogger(IpUtil.cla

  • 直接亮代码 public String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

 相关资料
  • Class: Request一个XMLHttpRequest封装。 语法: var myRequest = new Request([options]); 参数: options - (object, optional)见下文。 选项: url - (string: defaults to null) 请求的URL(也可以是URI的一个实例) data - (mixed: defaults to

  • 用于发起网络请求。 安装 $ npm install universal-request --save 方法 request(options) 参数 属性 类型 必选 默认值 描述 options Object 是 - opthons.url String 是 - 请求的 URL 地址 opthons.headers Object 否 { 'Content-Type': 'application/

  • 功能 获得当前url的参数 author leeenx version 1.0.0 data: 2015-12-07 Official Usage //以<键:值>形式返回当前url的参数信息 $.request(); //返回指定键名的键值 $.request("name"); DEMO点击查看request 模块下载http://wq.360buyimg.com/js/ho2/min/un

  • // url: http://xx.com/aa/bb Request::url(); // 路径: /aa/bb Request::path(); // 获取请求 Uri: /aa/bb/?c=d Request::getRequestUri(); // 返回用户的 IP Request::ip(); // 获取 Uri: http://xx.com/aa/bb/?c=d Request::ge

  • 如何同时使用Http请求和Facades请求。 在我的自定义登录中,我使用了Laravel Throttle,以避免多次尝试登录。问题是当不使用Http请求时会显示错误 FatalThrowableError类型错误:传递给App\Http\Controllers\Controller::validate()的参数1必须是Illumbite\Http\Request的实例 如果使用Facades请

  • 主要内容:QueryString 集合实例,Form 集合实例,其他实例,Request 对象Request 对象用于从访客那里获取信息。 QueryString 集合实例 当用户点击链接时发送查询信息 本例演示如何在链接中向页面发送查询信息,并在目标页面中取回这些信息(在本例中是同一页面)。 QueryString 集合的简单应用 本例演示如何使用 QueryString 集合从表单取回值。(此表单使用 GET 方法,这意味着所发送的信息对用户来说是可见的。) 如何使用来自表单的信息 本