nginx + express 获取用户ip
nginx 配置
location / { proxy_pass http://127.0.0.1:3000; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; } 复制代码
讯享网
express 代码片段
讯享网var express = require('express') var app = express() app.get('/', function(req, res) { // 获取ip var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; console.log(ip) res.send(ip) }) app.listen(3000, function() { console.log('Server is running in 3000') }) 复制代码
demo 地址:github.com/omozzww/exp…
原生javascript获取用户ip
存在兼容性问题(不稳定)
function getUserIp(onNewIP) { // campatibility for firefox and chrome var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var pc = new myPeerConnection({ iceServers: [] }), noop = function() {}, localIPs = {}, ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g, key; function iterateIP(ip) { if (!localIPs[ip]) onNewIP(ip); localIPs[ip] = true; } // create a bogus data channel pc.createDataChannel(""); // create offer and set local description pc.createOffer().then(function(sdp) { sdp.sdp.split('\n').forEach(function(line) { if (line.indexOf('candidate') < 0) return; line.match(ipRegex).forEach(iterateIP); }); pc.setLocalDescription(sdp, noop, noop); }).catch(function(reason) { // An error occurred, so handle the failure to connect }); // listen for candidate events pc.onicecandidate = function(ice) { if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return; ice.candidate.candidate.match(ipRegex).forEach(iterateIP); } } // ip getUserIp(function(ip) { console.log('ip', ip); }); 复制代码
第三方接口获取用户ip
讯享网function getIp() { return new Promise((resolve, reject) => { var script = document.createElement('script') // script.src = 'https://jsonip.com/' script.src = 'http://pv.sohu.com/cityjson?ie=utf-8' script.onload = function() { resolve(window.returnCitySN) } document.body.appendChild(script) }) } 复制代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125513.html