Bulk origin override

Resolve requests to your domain to a set of proxy third-party origin URLs.

Last updated Apr 23, 2026

export default {
    async fetch(request) {
        /**
         * An object with different URLs to fetch
         * @param {Object} ORIGINS
         */
        const ORIGINS = {
            "starwarsapi.yourdomain.com": "swapi.dev",
            "google.yourdomain.com": "www.google.com",
        };

        const url = new URL(request.url);

        // Check if incoming hostname is a key in the ORIGINS object
        if (url.hostname in ORIGINS) {
            const target = ORIGINS[url.hostname];
            url.hostname = target;
            // If it is, proxy request to that third party origin
            return fetch(url.toString(), request);
        }
        // Otherwise, process request as normal
        return fetch(request);
    },
};
export default {
    async fetch(request): Promise<Response> {
        /**
         * An object with different URLs to fetch
         * @param {Object} ORIGINS
         */
        const ORIGINS = {
            "starwarsapi.yourdomain.com": "swapi.dev",
            "google.yourdomain.com": "www.google.com",
        };

        const url = new URL(request.url);

        // Check if incoming hostname is a key in the ORIGINS object
        if (url.hostname in ORIGINS) {
            const target = ORIGINS[url.hostname];
            url.hostname = target;
            // If it is, proxy request to that third party origin
            return fetch(url.toString(), request);
        }
        // Otherwise, process request as normal
        return fetch(request);
    },
} satisfies ExportedHandler;
import { Hono } from "hono";
import { proxy } from "hono/proxy";

// An object with different URLs to fetch
const ORIGINS: Record<string, string> = {
    "starwarsapi.yourdomain.com": "swapi.dev",
    "google.yourdomain.com": "www.google.com",
};

const app = new Hono();

app.all("*", async (c) => {
    const url = new URL(c.req.url);

    // Check if incoming hostname is a key in the ORIGINS object
    if (url.hostname in ORIGINS) {
        const target = ORIGINS[url.hostname];
        url.hostname = target;

        // If it is, proxy request to that third party origin
        return proxy(url, c.req.raw);
    }

    // Otherwise, process request as normal
    return proxy(c.req.raw);
});

export default app;
from workers import WorkerEntrypoint
from js import fetch, URL

class Default(WorkerEntrypoint):
    async def fetch(self, request):
        # A dict with different URLs to fetch
        ORIGINS = {
          "starwarsapi.yourdomain.com": "swapi.dev",
          "google.yourdomain.com": "www.google.com",
        }

        url = URL.new(request.url)

        # Check if incoming hostname is a key in the ORIGINS object
        if url.hostname in ORIGINS:
            url.hostname = ORIGINS[url.hostname]
            # If it is, proxy request to that third party origin
            return fetch(url.toString(), request)

        # Otherwise, process request as normal
        return fetch(request)

Was this helpful?

YesNo

On this page

Bulk origin override - 图1Docs

{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/workers/examples/bulk-origin-proxy/#page","headline":"Bulk origin override","description":"Resolve requests to your domain to a set of proxy third-party origin URLs.","url":"https://developers.cloudflare.com/workers/examples/bulk-origin-proxy/","inLanguage":"en","image":"https://developers.cloudflare.com/workers/examples/bulk-origin-proxy/og.png?v=fb9792aef3b12ed5","dateModified":"2026-04-23","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"},"keywords":["Middleware","JavaScript","TypeScript","Python"]}


description: Redirect requests to certain URLs based on a mapped object to the request's URL. title: Bulk redirects image: https://developers.cloudflare.com/workers/examples/bulk-redirects/og.png?v=7c90f475ac5711f2


Skip to content

Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/workers/llms.txt
Use this file to discover all available pages before exploring further.