使用腾讯地图的 IP 定位服务。这里是正确的实现方式

news/2024/11/14 5:53:39/
<?phpnamespace App\Http\Middleware;use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;class CheckXinjiangIp
{protected $key = ' ';  // 你的腾讯地图 keypublic function handle(Request $request, Closure $next){$ip = $request->ip();if ($ip === '127.0.0.1') {return $next($request);}// 缓存24小时$location = Cache::remember('ip_location_' . $ip, 60 * 24, function () use ($ip) {$response = Http::get('https://apis.map.qq.com/ws/location/v1/ip', ['key' => $this->key,'ip' => $ip]);return $response->json();});// 检查是否是新疆地区if (isset($location['result']['ad_info']['province']) && $location['result']['ad_info']['province'] === '新疆') {return $next($request);}// 非新疆地区返回JSON响应return response()->json(['code' => 403,'msg' => '非新疆地区访问','data' => ['redirect' => true,'path' => '/pages/banners/index']]);}
}

腾讯地图 IP 定位服务的特点:

  • 需要在请求参数中带上 key
  • 返回的地区信息更准确
  • 支持 HTTPS
  • 有每日免费配额

返回数据示例:

{"status": 0,"message": "Success","result": {"ip": "xxx.xxx.xxx.xxx","location": {"lat": 43.92172,"lng": 87.46991},"ad_info": {"nation": "中国","province": "新疆","city": "乌鲁木齐市","district": "渠道"}}
}


http://www.ppmy.cn/news/1546407.html

相关文章

物联网学习路线来啦!

物联网学习路线来啦! 物联网方向作为目前一个热门的技术发展方向&#xff0c;有大量的人才需求&#xff0c;小白的学习入门路线推荐以下步骤。 1.了解物联网基本概念 物联网&#xff08;IoT&#xff09;是由各种传感器、设备和互联网组成的网络&#xff0c;通过这个网络可以实现…

docker里rtsp推流+同一个docker接受流进行部署

1.参考&#xff1a; https://blog.csdn.net/m0_57609406/article/details/140323327 2.dockerfile命令 # 使用官方 Python 基础镜像 FROM python:3.8.18-slim# 设置工作目录 WORKDIR /usr/src/app# 安装必要的软件包&#xff08;FFmpeg、OpenCV、lsof、RTSP工具&#xff09;…

C语言中“type”的含义

在C语言中&#xff0c;“type”是指数据类型&#xff0c;它定义了变量可以存储的数据种类以及可以对这些数据执行的操作。C语言提供了一系列基本的数据类型&#xff0c;它们包括但不限于&#xff1a; 整型&#xff08;Integer Types&#xff09;&#xff1a; int&#xff1a;用…

苍穹外卖 数据可视化

将营业额、用户数据、订单数据、商品销量top10数据全部使用Apache Echarts可视化&#xff0c;展现在前端&#xff0c;后端只需要按照需要的格式&#xff0c;为前端提供数据即可。 ReportController package com.sky.controller.admin;import com.sky.result.Result; import co…

Web前端效果展示:腺体超声图像分割

腺体超声图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DCNV2-Dynamic&#xff06;yolov8-seg-C2f-DiverseBranchBlock等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge …

游戏引擎学习第六天

这节讲的内容比较多: 参考视频:https://www.bilibili.com/video/BV1apmpYVEQu/ XInput 是微软提供的一个 API&#xff0c;用于处理 Windows 平台上 Xbox 控制器&#xff08;包括有线和无线&#xff09;及其他游戏控制器的输入。它为开发者提供了一组函数&#xff0c;用于查询控…

ubuntu内核更新导致的nvidia cuda驱动失效问题

参考链接: https://forums.developer.nvidia.com/t/errors-were-encountered-while-processing-dkms/236521/14 推荐cuda驱动版本的确认 sudo apt install ubuntu-drivers-common sudo ubuntu-drivers devices找 “recommended” 对应的驱动版本我这里是 nvidia-driver-550 …

大数据学习09之Hive基础

1.Hive基本概念 1.1Hive简介 Hive 的前生属于 Facebook&#xff0c;用于解决海量结构化数据的统计分析&#xff0c;现在属于 Apache 软件基金会。Hive 是一个构建在Hadoop 之上的数据分析工具&#xff08;Hive 没有存储数据的能力&#xff0c;只有使用数据的能力&#xff09;&…