当前位置: 首页 > news >正文

微信人生里面微网站怎么做gta5此网站正在建设

微信人生里面微网站怎么做,gta5此网站正在建设,湖北建设企业网站价格,酒店网站的设计摘要项目需要获取用户得位置信息以及地区时间#xff0c;因为第一次搞#xff0c;以防还有下次#xff0c;特此记录 1.首先就是显得拿到用户得ip地址 先上代码#xff1a; public boolean checkIp(String ip) {return null ip || ip.isEmpty() || unknown.equa…项目需要获取用户得位置信息以及地区时间因为第一次搞以防还有下次特此记录 1.首先就是显得拿到用户得ip地址 先上代码 public boolean checkIp(String ip) {return null ip || ip.isEmpty() || unknown.equalsIgnoreCase(ip);}public String getIp(HttpServletRequest request){// 获取请求主机IP地址,如果通过代理进来则透过防火墙获取真实IP地址String headerName x-forwarded-for;String ip request.getHeader(headerName);if (null ! ip !ip.isEmpty() !unknown.equalsIgnoreCase(ip)) {// 多次反向代理后会有多个IP值第一个IP才是真实IP,它们按照英文逗号,分割if (ip.contains(,)) {ip ip.split(,)[0];}}if (checkIp(ip)) {headerName Proxy-Client-IP;ip request.getHeader(headerName);}if (checkIp(ip)) {headerName WL-Proxy-Client-IP;ip request.getHeader(headerName);}if (checkIp(ip)) {headerName HTTP_CLIENT_IP;ip request.getHeader(headerName);}if (checkIp(ip)) {headerName HTTP_X_FORWARDED_FOR;ip request.getHeader(headerName);}if (checkIp(ip)) {headerName X-Real-IP;ip request.getHeader(headerName);}if (checkIp(ip)) {headerName remote addr;ip request.getRemoteAddr();// 127.0.0.1 ipv4, 0:0:0:0:0:0:0:1 ipv6if (127.0.0.1.equals(ip) || 0:0:0:0:0:0:0:1.equals(ip)) {//根据网卡取本机配置的IPInetAddress inet null;try {inet InetAddress.getLocalHost();} catch (UnknownHostException e) {throw new SvcException(e.getMessage());}if(inet!null){ip inet.getHostAddress();}}}return ip;} 原理客户端想要跟服务端交互必然经历三次握手因此必然会告诉服务端自己得ip。再从服务端说起如果服务器直接把IP暴漏出去那么request.getRemoteAddr()就能拿到客户端ip。 但目前流行的架构中基本上服务器都不会直接把自己的ip暴漏出去一般前面还有一层或多层反向代理常见的nginx居多。 加了代理后相当于服务器和客户端中间还有一层这时候request.getRemoteAddr()拿到的就是代理服务器的ip了并不是客户端的ip。所以这种情况下一般会在转发头上加X-Forwarded-For等信息用来跟踪原始客户端的ip。 这时候才会用上面的这些代码。解释下这些加上的信息   X-Forwarded-For这是一个 Squid 开发的字段只有在通过了HTTP代理或者负载均衡服务器时才会添加该项。格式为X-Forwarded-For:client1,proxy1,proxy2一般情况下第一个ip为客户端真实ip后面的为经过的代理服务器ip。Proxy-Client-IP/WL- Proxy-Client-IP这个一般是经过apache http服务器的请求才会有用apache http做代理时一般会加上Proxy-Client-IP请求头 而WL-Proxy-Client-IP是他的weblogic插件加上的头。 这种情况也是直接能拿到。HTTP_CLIENT_IP有些代理服务器也会加上此请求头。X-Real-IPnginx一般用这个。 说到底就是一个一个测试。 Nginx 的作用与问题 Nginx 作为一个反向代理主要是接收来自客户端的请求然后将请求转发给后端的服务器。在这个过程中Nginx 会修改 HTTP 请求的来源 IP 地址替换为它自己的 IP 地址。这样的设计使得后端服务器只需要处理来自一个 IP 地址的请求简化了很多复杂性。 然而这种设计也带来了一个问题后端服务器无法获取到真实的客户端 IP 地址。在很多应用中获取真实的客户端 IP 地址是非常重要的例如进行地理定位、检测欺诈行为、限制访问速率等。 Nginx 配置的解决方法 要解决这个问题我们可以在 Nginx 的配置中添加一些设置以将客户端的真实 IP 地址添加到请求的 X-Forwarded-For 和 X-Real-IP 头中。在你的 Nginx 配置文件的相应 location 或 server 区块中添加以下行 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这些行的作用是将客户端的 IP 地址添加到每个请求的 X-Real-IP 和 X-Forwarded-For 头中。然后你的应用就可以从这些头中读取到客户端的真实 IP 地址了。 实际操作步骤 一旦我们了解了原理接下来就是实际操作步骤。在你的 Nginx 配置文件通常为 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default中找到你需要配置的 server 或 location 块在其中添加上述的两行 proxy_set_header 配置 location / {proxy_pass http://your_backend;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 经过前面步骤一般来说可以拿到我们得用户ip了 2.获取地理信息以及时区时间 我是用的ip2location来确立得位置信息以及时区信息。 先导入pom.xml dependencygroupIdcom.maxmind.geoip2/groupIdartifactIdgeoip2/artifactIdversion2.17.0/version/dependency 然后去官网下载一个GeoLite2-City.mmdb文件 最后直接上代码了 public String info(HttpServletRequest request) throws IOException, GeoIp2Exception {String ip getIp(request);String databasePath /tmp/GeoLite2-City.mmdb;File database new File(databasePath);dbReader new DatabaseReader.Builder(database).build();InetAddress ipAddress InetAddress.getByName(ip);CityResponse response;try {response dbReader.city(ipAddress);}catch (AddressNotFoundException e){throw new SvcException(CodeResponse.ADDRESS_ABNORMALITY);}String cityName response.getCity().getName(); // 获取城市名称Country country response.getCountry(); // 获取国家信息String countryName country.getNames().get(zh-CN); // 获取国家中文名称Location location response.getLocation(); // 获取地理位置信息String timeZone location.getTimeZone(); //时区TimeZone time TimeZone.getTimeZone(timeZone);SimpleDateFormat format new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);TimeZone.setDefault(time);Calendar calendar Calendar.getInstance();Date date calendar.getTime();String Time format.format(date);return 国家: countryName ;城市: cityName ;时区: timeZone ;时间: Time;} 参考: java后端获取客户端用户真实ip原理_用户请求后台时获取到用户地址-CSDN博客 Nginx反向代理及获取真实的客户端IP地址-腾讯云开发者社区-腾讯云 (tencent.com) GeoLite2 City库的基本使用与下载, 通过ip查询地址_geolite2-city.mmdb 下载-CSDN博客 还有个博主自己写了个包可以获取简单得地理位置信息 根据IP获取地理位置Java准确率99%_java获取ip定位城市-CSDN博客
http://www.hkea.cn/news/14338648/

相关文章:

  • wordpress+怎么改密码seo诊断报告示例
  • 加强网站建设的建议网络营销的特点与方法有哪些
  • 网站优化试卷wordpress 作者墙
  • 天津旅游网站建设网站建设时间规划
  • 苏州 网站设计 知名怎么给我 的网站做关键词
  • 北京做网站制作的公司哪家好深圳有多少家设计公司
  • 邢台建网站的公司太原网站制作价格
  • 上海城市建设网站毕设做网站的过程
  • wordpress商城建站小程序制作费用一览表
  • 临清网站推广wordpress widgets_init
  • 校园网站建设实施方案伪静态一个虚拟空间做两个网站
  • 模板网站建设优惠最近国际新闻大事20条
  • 腾讯云服务器用什么做网站品牌营销增长好牌子推荐
  • 广西南宁电商网站建设iis网站服务器安全隐患分析
  • 建设文化产业网站的方案wordpress 安装 空白
  • 做网站有要求吗南昌网站怎么做seo
  • 湖南长信建设集团网站自己做的网站怎么在局域网中访问
  • 做效果图的网站中国建筑集团公司官网
  • 音乐网站开发技术人员配置群晖 wordpress 中文
  • 文化传播集团网站建设网站查询域名ip查询
  • dede 网站图标wordpress关闭手机访问不了
  • 广州市外贸网站建设品牌门户网站建站多少钱
  • 宁波如何建网站crm软件免费
  • 做旅游平台网站找哪家好用ps设计网站做多大的
  • 温州定制网站建设电话做空间的网站吗
  • 制作商城网站模板南京网站关键词优化
  • 中国石油网站建设在线第三次作业焦作专业做网站公司哪家好
  • wordpress官方主题西宁网站建设优化案例
  • 海外网站怎么浏览上海金山网站设计公司
  • 做网站网站如何定位学广告设计好就业吗