Keep in mind, that this endpoint is opened to the world. Remove Access-Control-Allow-Origin if you want to remove CORS support. You can find more about this in the official documentation.
If you ever needed to detect a visitor's country and city by IP address you probably stumbled upon services such us IPInfo. Although they're good, it's overkill and too expensive. IPInfo went too wild with its pricing.
A good free customizable alternative can be Cloudflare Workers. With the free plan, you can make up to 100k requests per day. And if you need more — paid plan is just $5/mo.
Login to your Cloudflare account and go to Workers from the sidebar menu.
Next, click «Create a Service».
Enter desirable service name, or leave it predefined. I prefer these randomized names, like snowy-barcode-1433. Choose «HTTP Handler» as a starter.
Hit «Create service».
Now, click «Quick Edit» on the right side of the screen.
In the opened screen, replace default code with the code below.
Finally, hit «Save and Deploy».
Now, when you open worker URL(https://empty-bird-5317.your-company-name.workers.dev/) in the browser you'll see response below.
{
"city": "Tbilisi",
"country": "GE",
"ip_addr": "your-ip-addr"
}
It goes without saying that you can now customize this endpoint to return more parameters. Take a look at the official documentation for more options. Don't forget to explore Cloudflare Workers Request.