最近打算自己做一个小程序(未发布),需要获取用户的地理位置,比如其所在城市,最简单的办法可能是去平台申请获取地理位置的权限,还需要申请审核就想看看有没有其他办法,最简单的办法就是通过IP调用接口来获取对应的所在位置,但是这个要处理http转发头的问题,即x-realip,forward之类的头,能不能直接通过某种方式获取呢,然后看了一下自己以前在cloudflare上写的一个ifconfig的worker,就是客户端请求获取自己相关信息的功能。
效果如下
cloudflare会在基本的http请求的基础上加上一个cf扩展信息,其中就包含,city这个字段。
这样就可以将这个workers作为一个代理架在客户端和服务端之间。
除了获取客户端相关信息之外,workers能做的事情非常多,比如做验证,请求重定向,响应内容更改,总得来说就是不改后端代码的情况就能加很多额外的逻辑。
最后让我更惊喜的是,它已经支持超级多的其他编程语言了,比如Python和rust,Python可以使用fastapi框架,rust可以使用axum框架,这些功能真是离谱。。。
城市:
这精度够吗
还可以吧,总比自己通过geo相关网站获取的数据准确吧,而且cf扩展信息里面还有经纬度
很好的思维哎,这样避开了很多到后端麻烦的事情。对于我这种依赖 ai 写代码的人太友好了。谢谢分享。
cloudflare之下,众生平等!
不明觉厉!