nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
1、nodejs获取客户端真实的IP地址:
在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ngix等
代理,在用户访问的时候,就需要透过代理查看用户的真实IP地址,以下是nodejs获取客户端真实IP的代码:
//获取客户端真实ip;
function getClientIp(req) {
var ipAddress;
var forwardedIpsStr = req.headers['X-Forwarded-For'];//判断是否有反向代理头信息
if (forwardedIpsStr) {//如果有,则将头信息中第一个地址拿出,该地址就是真实的客户端IP;
var forwardedIps = forwardedIpsStr.split(',');
ipAddress = forwardedIps[0];
}
if (!ipAddress) {//如果没有直接获取IP;
ipAddress = req.connection.remoteAddress;
}
return ipAddress;
};
另外,在网上看到别人有这么写的:
//代码,第一段判断是否有反向代理IP(头信息:x-forwarded-for),在判断connection的远程IP,以及后端的socket的IP。
function getClientIp(req) {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
};
2、nodejs中动态页面引用静态路径下的内容
在动态页面中引用静态引入路径下的内容(如图片,css文件时),注意路径的写法:
例如:我在error.html中引用“public/images/”下的error.png图片,需要几个步骤:
工程的结构图:

第一步:app.js中:
app.use(express.static(path.join(__dirname, 'public')));//表示动态页面可引用public路径下的静态信息
第二步:error.html中:
在style中,引用背景图片时,路径前就不能再加“public/”,只能为:“images/error.png”, 因为在app.js中已经设置了动态页面只能引用public下的静态内容,且它默认就在public路径下,只需要写从public的下级目录开始写就可以了。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=no" />
<title>统一支付</title>
<style>
.error-404{background-color:#EDEDF0;}
section{display: block;}
.clearfix{zoom:1;}
.module-error{margin-top:182px;}
.module-error .error-main{ margin: 0 auto;width: 420px;}
.module-error .label{float: left;width: 160px;height: 151px;background: url("images/error.png") 0 0 no-repeat;}//默认已经在public路径下,尽管改代码在IDE中报错(可以不用管)
.module-error .info{ margin-left: 182px;line-height: 1.8;}
.module-error .title{color: #666;font-size: 14px;}
.module-error .reason{margin: 8px 0 18px 0;color: #666;font-size: 12px;}
</style>
</head>
<body class="error-404">
<div id="doc_main">
<section class="bd clearfix">
<div class="module-error">
<div class="error-main clearfix">
<div class="label"></div>
<div class="info">
<h3 class="title">啊哦,你所访问的页面不存在了。</h3>
<div class="reason">
<p>可能的原因:</p>
<p>1.在地址栏中输入了错误的地址。</p>
<p>2.你点击的某个链接已过期。</p>
</div>
<div class="oper">
<p><a href="/">回到首页></a></p>
<p class="reason">或10s后将自动跳转到首页</p>
</div>
</div>
</div>
</div>
</section>
</div>
<script>
setTimeout("window.location.href='/'",10000);
</script> </body>
</html>
error.html
nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容的更多相关文章
- 【Go】获取用户真实的ip地址
原文链接:https://blog.thinkeridea.com/201903/go/get_client_ip.html 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip ...
- 获取客户端的请求IP地址
获取客户端的请求IP地址 package com.microClass.util; import javax.servlet.http.HttpServletRequest; import java. ...
- 用Java来获取访问者真实的IP地址
用Java来获取访问者真实的IP地址 转载 2016年06月07日 14:36:02 标签: 16497 编辑 删除 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAdd ...
- JAVA_用Java来获取访问者真实的IP地址
在jsp里,获取客户端的ip地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- java获取访问者真实的IP地址
众所周知java方法request.getremoteaddr()可以获得访问者的IP地址 但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件 ...
- PHP获取客户端和服务器IP地址
/** * 获取客户端IP地址 * @return string */ function get_client_ip() { if(getenv('HTTP_CLIENT_IP')){ $client ...
- Lodop获取客户端主网卡ip地址是0.0.0.0
LODOP技术手册的GET_SYSTEM_INFO篇,LODOP可以用语句获取到客户端很多信息,NetworkAdapter.1.IPAddress是主网卡IP地址,通常情况下是没问题的,不过如果当前 ...
- F5中源地址转换(AutoMap)模式下后端服务器获取客户端真正的IP地址
F5中开启AutoMap,并传递X-Forwarded-For值 开启F5源地址转换"Auto Map" 方式一: 在http profile中开启X-Forwarded-For ...
- Nginx 反向代理获取设备真实的IP地址
package com.das.common.util; import org.apache.commons.lang3.StringUtils; import org.springframework ...
随机推荐
- spring源码 — 三、AOP代理生成
AOP代理生成 AOP就是面向切面编程,主要作用就是抽取公共代码,无侵入的增强现有类的功能.从一个简单的spring AOP配置开始: <?xml version="1.0" ...
- python中xrange和yield的用法
相信很多人对xrange和yield都不是很清楚,网上很多文章也是写的云里雾里的,今天我用最简单的例子给大家说下. 说起xrange的时候就一定要提range,其实xrange 用法与 range 完 ...
- 安卓开发, 遇到WebView不能加载静态网页, WebView显示 "net::ERR_PROXY_CONNECTON_FAILED"
http://blog.csdn.net/zhouchangshi/article/details/44454695 Android开发中遇到网络连接问题, 要找WebView中显示一个静态的网页, ...
- framework4.0注册到IIS
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir -enable C:\WINDOWS\Microsoft.NET ...
- WIFI WPA1/2 Crack for Windows
0x00 前言 目前WIFI WPA破解主要 以“aircrack-ng”为代表,运行于Linux系统( 如Kali Linux ),Windows系统比较少见,主要是Windows系统下WIFI网卡 ...
- 【CUDA学习】全局存储器
全局存储器,即普通的显存,整个网格中的任意线程都能读写全局存储器的任意位置. 存取延时为400-600 clock cycles 非常容易成为性能瓶颈. 访问显存时,读取和存储必须对齐,宽度为4By ...
- easyui tree 编辑后保留原先状态
$(function () { var selected = $('#depttree').tree('getSelected'); $('#depttree').tree({ checkbox: f ...
- 奇怪吸引子---Thomas
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- [leetcode]Find Minimum in Rotated Sorted Array II @ Python
原题地址:https://oj.leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/ 解题思路:这道题和上一道题的区别是,数组中 ...
- Python中使用自定义类class作为海量数据结构时内存占用巨大的问题
最近碰到处理一个二十多兆的文件时内存蹭蹭的吃掉四百多兆,吓死宝宝了. 无奈毕竟接触python时间有限,还没有完整的看过python的一些基础知识,我想一个合格的pythoner应该不会碰到这个问题. ...