Search code examples
firebasegoogle-cloud-functionsfirebase-hosting

How can I get the hosting url instead of functions url in firebase functions for https


I have dynamically generated urls that I need to create for staging and production environments. I am doing a mix of Firebase hosting and functions. I am also using Firebase config to route urls to my Firebase functions "app". When I try to get the hosting url when I visit my site with req.get('host') inside a Firebase function I get the functions url. How can I get the Hosting url? - the url that triggered the firebase function?


Solution

  • If you examine the contents of req.headers, you'll find some attributes of interest:

    • host: The host of Cloud Functions, e.g. "us-central1-YOUR-PROJECT.cloudfunctions.net:
    • x-forwarded-host: Your Firebase Hosting host, e.g. "YOUR-PROJECT.firebaseapp.com"
    • x-forwarded-proto: The protocol of the original request, e.g. "https"
    • x-original-url: The URL path of the original request, e.g. "/test"

    Between three of those (the ones that start with "x-"), you could concatenate them together to get the original URL.

    I don't know if these headers are fully documented and supported.