JS获取ip地址归属地
- 格式:doc
- 大小:27.50 KB
- 文档页数:1
基于jsp的真实IP地址获取实现方法【摘要】在很多应用下可能有需要将用户的真实ip记录下来,这时就要获得用户的真实ip地址,在jsp里,获取客户端的ip地址的方法是:request.getremoteaddr(),这种方法在大部分情况下都是有效的。
但是在通过了apache,squid等反向代理软件就不能获取到客户端的真实ip地址。
对客户端访问服务器原理进行分析,服务器有可能通过了反向代理,这样通过request.getremoteaddr()方法获取的客户端ip不是客户端的真实ip。
在这种情况下可以通过x-forwarded-for信息来获取客户端的真实ip,并把获取的客户端ip记录到数据库或者记录到日志中,当服务器受到攻击时可以查看数据库或者日志中的ip看是否有异常ip访问。
【关键词】 ip jsp x-forwarded-for①反向代理②随着internet技术的发展,jsp技术迅速成为web技术中的主流,同时也面临诸多挑战,其中web安全性可以说是web运用中的潘多拉。
而通过jsp技术实现记录访问者真实ip,能在大多数情况下真实记录下访问者的真实ip。
也可以把ip记录运用到电子商务网站等以提高网站的安全系数。
jsp技术使用java编程语言编写类xml的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets 访问存在于服务端的资源的应用逻辑。
1 直接访问服务器与通过反向代理访问的比较1.1 客户端直接访问web时如图一所示在服务器没有使用代理时,客户端直接访问服务器上的web运用,这样可以直接通过request.getremoteaddr()方法来获取客户端的ip,1.2 客户端通过代理服务器间接访问服务器如图二所示的情况下由于使用的反向代理,假如http://202.203.85.110:20000的url反向代理为http:// 的url,这时通request.getremoteaddr()方法获取的ip地址是127.0.0.1或者202.203.85.112,这并不是客户端的真实ip,而是获取的可能是服务器本地机ip或者代理服务器的ip。
JS使⽤百度地图API⾃动获取地址和经纬度操作⽰例本⽂实例讲述了JS使⽤百度地图API⾃动获取地址和经纬度操作。
分享给⼤家供⼤家参考,具体如下:在实际⼯作中我们经常会遇到这样的问题,但是当我们去看百度API的时候往往⼜达不到我们的要求。
故此,本篇博⽂讲述如何使⽤百度地图API⾃动获取地址和经纬度:1、HTML代码如下<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>点击地图获取地址和经纬度map,address,lng,lat</title><meta name="robots" content="noindex, nofollow"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><!-- 将百度地图API引⼊,设置好⾃⼰的key --><script type="text/javascript" src="/api?v=2.0&ak=7a6QKaIilZftIMmKGAFLG7QT1GLfIncg"></script></head><body><div class="main-div"><form method="post" action="" name="theForm" enctype="multipart/form-data" onsubmit="return validate()"><table cellspacing="1" cellpadding="3" width="100%"><tr><td class="label">经度</td><td><input type="text" name="lng" id="lng" value=""/></td></tr><tr><td class="label">纬度</td><td><input type="text" name="lat" id="lat" value=""/></td></tr><tr><td class="label">地址</td><td><input type='text' value='' name='sever_add' id='sever_add' readonly><input type='button' value='点击显⽰地图获取地址经纬度' id='open'></td></tr></table></form><div id='allmap' style='width: 50%; height: 50%; position: absolute; display: none'></div></div></body></html>2、JS代码如下<script type="text/javascript">function validate() {var sever_add = document.getElementsByName('sever_add')[0].value;if (isNull(sever_add)) {alert('请选择地址');return false;}return true;}//判断是否是空function isNull(a) {return (a == '' || typeof(a) == 'undefined' || a == null) ? true : false;}document.getElementById('open').onclick = function () {if (document.getElementById('allmap').style.display == 'none') {document.getElementById('allmap').style.display = 'block';} else {document.getElementById('allmap').style.display = 'none';}}var map = new BMap.Map("allmap");var geoc = new BMap.Geocoder(); //地址解析对象var markersArray = [];var geolocation = new BMap.Geolocation();var point = new BMap.Point(116.331398, 39.897445);map.centerAndZoom(point, 12); // 中⼼点geolocation.getCurrentPosition(function (r) {if (this.getStatus() == BMAP_STATUS_SUCCESS) {var mk = new BMap.Marker(r.point);map.addOverlay(mk);map.panTo(r.point);map.enableScrollWheelZoom(true);}else {alert('failed' + this.getStatus());}}, {enableHighAccuracy: true})map.addEventListener("click", showInfo);//清除标识function clearOverlays() {if (markersArray) {for (i in markersArray) {map.removeOverlay(markersArray[i])}}}//地图上标注function addMarker(point) {var marker = new BMap.Marker(point);markersArray.push(marker);clearOverlays();map.addOverlay(marker);}//点击地图时间处理function showInfo(e) {document.getElementById('lng').value = e.point.lng;document.getElementById('lat').value = t;geoc.getLocation(e.point, function (rs) {var addComp = rs.addressComponents;var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber; if (confirm("确定要地址是" + address + "?")) {document.getElementById('allmap').style.display = 'none';document.getElementById('sever_add').value = address;}});addMarker(e.point);}</script>将js代码放⼊到html中,我们可以得到效果图如下:更多关于JavaScript相关内容还可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家JavaScript程序设计有所帮助。
js获取域名的方法JavaScript获取域名的方法JavaScript是一种常用于网页开发的编程语言,可以通过它来获取当前页面的域名。
在本文中,我们将介绍几种常见的方法来获取域名,并给出相应的代码示例。
1. 使用window对象的location属性使用window对象的location属性可以获取当前页面的URL信息,包括域名。
我们可以通过访问location对象的hostname属性来获取域名。
示例代码:```javascriptvar domain = window.location.hostname;console.log(domain);```运行以上代码,你将在控制台中看到当前页面的域名信息。
2. 使用document对象的URL属性类似地,我们也可以使用document对象的URL属性来获取当前页面的URL信息,并通过正则表达式提取出域名。
示例代码:```javascriptvar url = document.URL;var domain = url.match(/^(https?|ftp):\/\/([^\s]+)/g);console.log(domain[0]);```运行以上代码,你将在控制台中看到提取出的域名信息。
3. 使用HTML的a标签我们还可以利用HTML的a标签来获取域名。
首先需要创建一个隐藏的a标签,设置其href属性为当前页面的URL,然后通过访问a 标签的hostname属性来获取域名。
示例代码:```html<a href="#" id="hiddenLink" style="display:none;"></a><script>var link = document.getElementById('hiddenLink');link.href = document.URL;var domain = link.hostname;console.log(domain);</script>```运行以上代码,你将在控制台中看到当前页面的域名信息。
js获取当前域名、Url、相对路径和参数以及指定参数 ⼀、js获取当前域名有2种⽅法 1、⽅法⼀ var domain = document.domain; 2、⽅法⼆ var domain = window.location.host; 3、注意问题 由于获取到的当前域名不包括 http://,所以把获取到的域名赋给 a 标签的 href 时,别忘了加上 http://,否则单击链接时导航会出错。
⼆、获取当前Url的4种⽅法 var url = window.location.href; var url = self.location.href; var url = document.URL; var url = document.location; ie 地址栏显⽰的是什么,获取到的 url 就是什么。
三、获取当前相对路径的⽅法 ⾸先获取 Url,然后把 Url 通过// 截成两部分,再从后⼀部分中截取相对路径。
如果截取到的相对路径中有参数,则把参数去掉。
function GetUrlRelativePath() { var url = document.location.toString(); var arrUrl = url.split("//"); var start = arrUrl[1].indexOf("/"); var relUrl = arrUrl[1].substring(start);//stop省略,截取从start开始到结尾的所有字符 if(relUrl.indexOf("?") != -1){ relUrl = relUrl.split("?")[0]; } return relUrl; } 调⽤⽅法:GetUrlRelativePath();举例:假如当前 Url 是 http// www. liangshunet. com/pub/item.aspx?t=osw7,则截取到的相对路径为:/pub/item.aspx。
js查询当前路由参数的方法
在JavaScript中,我们经常需要获取当前路由参数来进行相关操作。
以下是几种常见的方法:
1. 使用 window.location.href 属性获取完整的 URL,再使用正则表达式或其他方法解析出路由参数。
2. 使用 window.location.search 属性获取 URL中的查询字符串,再使用 URLSearchParams API 解析出路由参数。
3. 如果你正在使用现代的 JavaScript框架(如React、Vue或Angular),则可以使用路由库提供的 API来获取当前路由参数。
例如,React Router提供了 useParams hook方法,可以轻松地获取当前路由参数。
无论你使用哪种方法,获取当前路由参数都是一个基本的JavaScript技能,值得掌握和应用。
- 1 -。
js获取域名的方法在JavaScript中,获取当前域名的方法有多种。
下面将介绍几种常用的方法来获取当前域名。
1. 使用window.location对象的属性JavaScript中的window.location对象提供了一些属性,可以用来获取当前网页的URL信息,包括当前域名。
其中,window.location.host属性返回包括域名在内的完整主机名(hostname:port),可以通过字符串截取来获取域名部分。
```javascriptvar domain = window.location.host.split(":")[0];```这段代码将获取当前网页的域名,并将其赋值给变量domain。
如果URL中包含端口号,通过split(":")方法将其分隔开,并取第一个部分作为域名。
2. 使用document.URL属性document.URL属性返回当前页面的完整URL,包括协议、域名、路径和查询参数等信息。
通过字符串处理,可以提取其中的域名部分。
```javascriptvar url = document.URL;var domain = url.split("/")[2];```这段代码将获取当前页面的完整URL,并通过split("/")方法将其分隔开,取第三个部分作为域名。
需要注意的是,这里假设URL的格式为协议://域名/路径,而不包括查询参数和锚点等。
3. 使用document.domain属性如果当前页面的域名与其他嵌套的页面的域名相同,可以使用document.domain属性来获取域名。
这种方法适用于跨域的页面间通信,要求两个页面的域名必须相同。
```javascriptvar domain = document.domain;```使用document.domain属性直接获取当前域名,无需进一步处理。
JS根据⼦⽹掩码,⽹关计算出所有IP地址范围⽰例// 验证IP的正则var ip_reg = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;// 验证⼦⽹掩码的正则var mask_reg = /^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/; /*** 把IP地址转换成⼆进制格式* @param string ip 待转换的IP的地址*/function ip_to_binary(ip){if (ip_reg.test(ip)) {var ip_str = "",ip_arr = ip.split(".");for (var i = 0; i < 4; i++) {curr_num = ip_arr[i];number_bin = parseInt(curr_num);number_bin = number_bin.toString(2);count = 8 - number_bin.length;for (var j = 0; j < count; j++) {number_bin = "0" + number_bin;}ip_str += number_bin;}return ip_str;}return '';}/*** 把⼆进制格式转换成IP地址* @param string binary 待转换的⼆进制 */function binary_to_ip(binary){if (binary.length == 32) {a = parseInt(binary.substr(0, 8), 2);b = parseInt(binary.substr(8, 8), 2);c = parseInt(binary.substr(16, 8), 2);d = parseInt(binary.slice(-8), 2);return a + '.' + b + '.' + c + '.' + d;}return '';}/*** 根据⼦⽹掩码和⽹关计算⽹络地址和⼴播地址* @param string mask ⼦⽹掩码* @param string gateway ⽹关*/function get_network_broadcast_addr(mask, gateway){network_broadcast = [];network_addr = "";mask_arr = mask.split(".");ip_arr = ip.split(".");// 计算IP的⽹络地址与(&)运算for (var i = 0; i < 4; i++) {number1 = parseInt(mask_arr[i]);number2 = parseInt(ip_arr[i]);network_addr += number1 & number2;if( i < 3 ){network_addr += ".";}}network_broadcast.push(network_addr);// 计算⼴播地址// ⼦掩码后⾯有⼏个0,就去掉IP地址后⼏位再补1mask_binary = ip_to_binary(mask);gateway_binary = ip_to_binary(ip);mask_zero = mask_binary.split(0).length - 1;one_number = new Array(mask_zero + 1).join('1'); // IP地址后位补1gateway_hou_wei_bu_yi = gateway_binary.slice(0, -mask_zero) + one_number;network_broadcast.push(binary_to_ip(gateway_hou_wei_bu_yi));return network_broadcast;}// 全排列组合算法(两两递归组合)function doExchange(doubleArrays){var len = doubleArrays.length;if(len >= 2){var len1 = doubleArrays[0].length;var len2 = doubleArrays[1].length;var newlen = len1 * len2;var temp = new Array(newlen);var index = 0;for(var i = 0; i < len1; i++){for(var j = 0; j < len2; j++){temp[index] = doubleArrays[0][i] + '.' + doubleArrays[1][j];index++;}}var newArray = new Array(len - 1);for(var i = 2; i < len; i++){newArray[i - 1] = doubleArrays[i];}newArray[0] = temp;return doExchange(newArray);} else{return doubleArrays[0];}}/*** 获取由⽹络地址和⼴播址组成的所有IP组合* @param string network_addr ⽹络地址* @param string broadcast_addr ⼴播地址* @param string gateway ⽹关*/ function return_ip(network_addr, broadcast_addr, gateway){range = [];start = network_addr.split(".");end = broadcast.split(".");// range格式为[[192], [168], [0,1,2...254], [0,1,2...254]]for (var i = 0; i < 4; i++) {if (start[i] == end[i]) {range[i] = [start[i]];} else {min = Math.min(start[i], end[i]);max = Math.max(start[i], end[i]);temp = []; if (i == 3) min = 199; // 从200起计for (var j = min; j <= max; j++) {temp.push(j);}range[i] = temp;}}ip_list = doExchange(range);ip_list.shift(); // 去掉⽹络地址ip_list.pop(); // 去掉⼴播地址gateway_index = -1;// 去掉⽹关for (var k = 0; k < ip_list.length; k++) {if (ip_list[k] == gateway) {gateway_index = k;break;}}if (gateway_index > -1) {ip_list.splice(gateway_index, 1);}return ip_list;}PS:这⾥再为⼤家推荐⼏款相关在线⼯具供⼤家参考:。
js使用geolocation.getcityinfo方法在JavaScript中,navigator.geolocation 对象提供了一种方法来访问用户的地理位置信息。
但是,请注意,出于隐私考虑,浏览器通常需要用户明确授权才能获取地理位置信息。
如果你想获取城市信息,你可以使用navigator.geolocation.getCurrentPosition() 方法,该方法接受两个参数:一个成功的回调函数和一个失败的回调函数。
成功的回调函数将接收一个 Position 对象作为参数,你可以从中提取城市信息。
下面是一个简单的示例:javascriptif (navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(posi tion) {var city = position.coords.city;console.log("City: " + city);}, function(error) {console.log("Error occurred. Error code: " + error.code);// error.code 可以是:// 0: 未知错误// 1: 权限拒绝// 2: 位置不可用// 3: 请求超时});} else {console.log("Geolocation is not supported by this browser.");}这段代码首先检查浏览器是否支持地理位置服务。
如果支持,它就尝试获取当前位置。
如果成功,它就打印出城市名称;如果失败,它就打印出错误代码。
但是需要注意的是,position.coords.city 可能无法提供你期望的所有信息,特别是如果用户在一个没有广泛使用的城市或者在没有准确地理信息的地区。