假设我的样本网址是
我说我有以下路线
app.get('/one/two', function (req, res) {
var url = req.url;
}
Run Code Online (Sandbox Code Playgroud)
价值url将是/one/two.
如何在Express中获取完整的URL?例如,在上面的情况下,我想收到http://example.com/one/two.
如何从控制器中确定给定请求的IP地址?例如(快递):
app.post('/get/ip/address', function (req, res) {
// need access to IP address here
})
Run Code Online (Sandbox Code Playgroud) Cloudflare 更改传入请求的 IP 地址,因为 Cloudflare 是我的网站和互联网之间的中间件,即代理。
我应该如何获取请求的初始 IP 地址,而不是 Cloudflare 的 IP 地址。我听说过,mod_cloudflare但是这个插件是否只更新了我日志中的 ip 地址(?),而且我没有找到 nginx 的版本。
我有两个应用程序,一个是前端(react.js),一个是 REST API 后端(基于express.js 的nest.js)。前端客户端向后端请求时如何获取访问后端的用户IP地址?
我检查了这个问题并尝试了解决方案
使用单独的客户端和服务器应用程序,如何在 Node 和 Koa 中获取用户的 IP 地址?
但我得到的是前端的服务器IP而不是客户端IP。
有没有一种方法无需对前端应用程序进行任何更改,就可以在nest.js中获取真实的客户端IP?
我想使用 IP 地址构建简单的身份验证,我列入白名单的某些 IP 地址可以访问 API。但是当我request.ip只使用它时,我遇到了一个问题::1,它的输出不是真实的IP地址。
如何在nestjs中获取用户IP地址?这是我现在的代码
import {
Injectable,
CanActivate,
ExecutionContext,
Logger,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable()
export class AuthGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest();
const allowedIp: Array<string> = ['129.2.2.2', '129.2.2.2'];
if (process.env.ENV === 'production') {
const ip = request.connection.remoteAddress;
Logger.log(ip, 'ACCESSED IP ADDRESS');
if (allowedIp.includes(ip)) {
return true;
} else {
return false;
}
} else { …Run Code Online (Sandbox Code Playgroud) 我在 docker 容器中托管了一个带有 express.js 的 node.js 服务器。我的容器的地址是 172.17.0.62 而我使用 nginx 将流量重定向到 172.17.0.62
我可以访问我的服务器。但是当我使用
console.log(req.ip + ' ' + req.protocol + ' ' + req.originalUrl);
Run Code Online (Sandbox Code Playgroud)
记录流量。req.ip 始终为 172.17.42.1。我想获取我的网页查看者的 ip
我在我的 nginx 配置中使用它
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)
和
cat /proc/sys/net/ipv4/ip_forward # output 1
Run Code Online (Sandbox Code Playgroud) 我有一个位于服务器中的运行node.js脚本.我想要的是它不能直接从浏览器访问,我也希望只有某些域/ IP-s可以调用它!可能吗?!
是否可以将不同的ip过滤器应用于不同的路由?
例如,我只希望123.123.123.123的人可以访问我的服务器/test路由,只有来自124.124.124.124的人才能访问我服务器的/路由.
我知道express-ipfilter可以通过IP地址限制站点访问.但它不能将过滤器应用于特定路线.
我也知道app.use(ipfilter(ips, {}));在路由中间添加只能对以下路由应用过滤器:
var express = require('express'),
ipfilter = require('express-ipfilter').IpFilter;
var ips = ['::ffff:127.0.0.1'];
var app = express();
app.get('/test', function(req, res) {
res.send('test');
});
app.use(ipfilter(ips, {})); // the ipfilter only applies to the routes below
app.get('/', function(req, res) {
res.send('Hello World');
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
但我想为不同的路线使用不同的过滤器.
是否有可能做到这一点?
我想在模型中编写函数以获取用户ip,并希望存储在用户表中的节点js中具有列名ip_address。(使用express,mysql)
User.prototype.userip= function(req, res)
{
// here need access to IP address here
}
Run Code Online (Sandbox Code Playgroud) node.js ×7
express ×5
ip ×2
javascript ×2
nestjs ×2
nginx ×2
api ×1
cloudflare ×1
docker ×1
reactjs ×1
restriction ×1
server ×1
typescript ×1
url ×1