利用 CloudFlare 打造的万能跨域解决方案

背景

最近有个功能,需要在前端调用第三方 API 查询 IP 的地理位置。一般来说,作为一个接口提供方,如果接口是完全对外公开的,那么应该设置相应的跨域头部,举个栗子:Nginx 跨域配置。然而,事情总没那么顺利。

问题点

问题点有以下几个:

  1. 我需要能同时查 IPV4/IPV6 的地理位置的接口,一番排除下来,能用的只有 freeapi.ipip.net
  2. 上述 API 没有正确的跨域配置
  3. 不想魔改前端代码,也不想另外搭一个后端提供 IP 查询服务

解决

在之前一篇介绍「免费的科学上网工具」文章中,有提到 CloudFlare 的免费 Worker 服务。这次,我同样想到了这个救命稻草。

在 GitHub 上找到一份恰好满足需求的代码 Zibri/cloudflare-cors-anywhere,于是就有了我的 cors-anywhere 站点:cors-anywhere

实现原理也很简单:一个正确设置了跨域头部的代理。亮点在于使用了 CloudFlare 的免费服务,省得自己单独搭后端。