Geolocation: Hello World
Get all geolocation data fields and display them in HTML.
export default { async fetch(request) { let html_content = ""; let html_style = "body{padding:6em; font-family: sans-serif;} h1{color:#f6821f;}";
html_content += "<p> Colo: " + request.cf.colo + "</p>"; html_content += "<p> Country: " + request.cf.country + "</p>"; html_content += "<p> City: " + request.cf.city + "</p>"; html_content += "<p> Continent: " + request.cf.continent + "</p>"; html_content += "<p> Latitude: " + request.cf.latitude + "</p>"; html_content += "<p> Longitude: " + request.cf.longitude + "</p>"; html_content += "<p> PostalCode: " + request.cf.postalCode + "</p>"; html_content += "<p> MetroCode: " + request.cf.metroCode + "</p>"; html_content += "<p> Region: " + request.cf.region + "</p>"; html_content += "<p> RegionCode: " + request.cf.regionCode + "</p>"; html_content += "<p> Timezone: " + request.cf.timezone + "</p>";
let html = `<!DOCTYPE html> <head> <title> Geolocation: Hello World </title> <style> ${html_style} </style> </head> <body> <h1>Geolocation: Hello World!</h1> <p>You now have access to geolocation data about where your user is visiting from.</p> ${html_content} </body>`;
return new Response(html, { headers: { "content-type": "text/html;charset=UTF-8", }, }); },};
export default { async fetch(request): Promise<Response> { let html_content = ""; let html_style = "body{padding:6em; font-family: sans-serif;} h1{color:#f6821f;}";
html_content += "<p> Colo: " + request.cf.colo + "</p>"; html_content += "<p> Country: " + request.cf.country + "</p>"; html_content += "<p> City: " + request.cf.city + "</p>"; html_content += "<p> Continent: " + request.cf.continent + "</p>"; html_content += "<p> Latitude: " + request.cf.latitude + "</p>"; html_content += "<p> Longitude: " + request.cf.longitude + "</p>"; html_content += "<p> PostalCode: " + request.cf.postalCode + "</p>"; html_content += "<p> MetroCode: " + request.cf.metroCode + "</p>"; html_content += "<p> Region: " + request.cf.region + "</p>"; html_content += "<p> RegionCode: " + request.cf.regionCode + "</p>"; html_content += "<p> Timezone: " + request.cf.timezone + "</p>";
let html = `<!DOCTYPE html> <head> <title> Geolocation: Hello World </title> <style> ${html_style} </style> </head> <body> <h1>Geolocation: Hello World!</h1> <p>You now have access to geolocation data about where your user is visiting from.</p> ${html_content} </body>`;
return new Response(html, { headers: { "content-type": "text/html;charset=UTF-8", }, }); },} satisfies ExportedHandler;
from workers import Response
async def on_fetch(request): html_content = "" html_style = "body{padding:6em font-family: sans-serif;} h1{color:#f6821f;}"
html_content += "<p> Colo: " + request.cf.colo + "</p>" html_content += "<p> Country: " + request.cf.country + "</p>" html_content += "<p> City: " + request.cf.city + "</p>" html_content += "<p> Continent: " + request.cf.continent + "</p>" html_content += "<p> Latitude: " + request.cf.latitude + "</p>" html_content += "<p> Longitude: " + request.cf.longitude + "</p>" html_content += "<p> PostalCode: " + request.cf.postalCode + "</p>" html_content += "<p> Region: " + request.cf.region + "</p>" html_content += "<p> RegionCode: " + request.cf.regionCode + "</p>" html_content += "<p> Timezone: " + request.cf.timezone + "</p>"
html = f""" <!DOCTYPE html> <head> <title> Geolocation: Hello World </title> <style> {html_style} </style> </head> <body> <h1>Geolocation: Hello World!</h1> <p>You now have access to geolocation data about where your user is visiting from.</p> {html_content} </body> """
headers = {"content-type": "text/html;charset=UTF-8"} return Response(html, headers=headers)
import { Hono } from "hono";import { html } from "hono/html";
// Define the RequestWithCf interface to add Cloudflare-specific propertiesinterface RequestWithCf extends Request { cf: { // Cloudflare-specific properties for geolocation colo: string; country: string; city: string; continent: string; latitude: string; longitude: string; postalCode: string; metroCode: string; region: string; regionCode: string; timezone: string; // Add other CF properties as needed };}
const app = new Hono();
app.get("*", (c) => { // Cast the raw request to include Cloudflare-specific properties const request = c.req.raw;
// Define styles const html_style = "body{padding:6em; font-family: sans-serif;} h1{color:#f6821f;}";
// Create content with geolocation data let html_content = html` <p>Colo: ${request.cf.colo}</p> <p>Country: ${request.cf.country}</p> <p>City: ${request.cf.city}</p> <p>Continent: ${request.cf.continent}</p> <p>Latitude: ${request.cf.latitude}</p> <p>Longitude: ${request.cf.longitude}</p> <p>PostalCode: ${request.cf.postalCode}</p> <p>MetroCode: ${request.cf.metroCode}</p> <p>Region: ${request.cf.region}</p> <p>RegionCode: ${request.cf.regionCode}</p> <p>Timezone: ${request.cf.timezone}</p>`;
// Compose the full HTML const htmlContent = html`<!DOCTYPE html> <head> <title>Geolocation: Hello World</title> <style> ${html_style} </style> </head> <body> <h1>Geolocation: Hello World!</h1> <p> You now have access to geolocation data about where your user is visiting from. </p> ${html_content} </body> `;
// Return the HTML response return c.html(htmlContent);});
export default app;
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Products
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark