如何判断请求是否来自苏格兰?

问题描述 投票:0回答:2

标题可能看起来有点奇怪,但我有一个情况,我有一个 Web 应用程序(Node.js 应用程序在 Azure Frontdoor + Azure 应用服务后面提供),并且需要知道请求是否来自苏格兰,以便我可以向用户显示一些特定资源(主要是图像)来代替默认资源。

我希望以编程方式执行此操作,利用 Frontdoor 的功能将某些内容注入到进入应用服务的请求中,然后检查 Node.js 应用程序中的标头并决定以这种方式加载哪些资产。

但是,Frontdoor 只会告诉我请求是否源自英国。我还查看了一些库/API,但似乎没有什么是那么精细的。我还尝试查找苏格兰境内是否有 IP 范围的规范列表,但(预期)没有结果。

我知道这个问题可以通过改变用户体验来解决(即在旅程开始时询问某人居住在哪里),但希望让事情变得更加无缝。

如有任何建议,我们将不胜感激。

azure geolocation azure-web-app-service azure-front-door
2个回答
2
投票

您可以使用像 https://ipinfo.io/ 这样的服务,它有一个

IP Geolocation API

您可以从 Frontdoor 的 header

X-Azure-ClientIP
中获取用户 IP,然后调用 API 来获取区域。此外,您应该将该信息链接到用户以实现持久性,您不必在每次用户访问您的网站时都进行 API 调用。


0
投票

免责声明——我与 ipinfo.io 没有任何关系。


正如Lauden在他的answer中提到的,ipinfo.ioIP Geolocation API是一个方便的选择。对于少量批量请求(例如同一请求 IP 每天 100-150 个),该服务是免费的,对于更专业的用途,有付费模型。

例如,您可以使用

curl
检查区域,如下所示:

curl -s https://ipapi.co/$IP/region

比你会得到例如

$ curl -s https://ipapi.co/84.64.83.219/region
Scotland
$ curl -s https://ipapi.co/82.37.113.61/region
Scotland

如果替换

region
并检查参数
city
,第一个生成格拉斯哥,第二个生成爱丁堡。

© www.soinside.com 2019 - 2024. All rights reserved.