All server-side fetching goes through a custom safe-fetch function that validates destinations against internal and cloud-metadata addresses on every redirect hop to prevent server-side request forgery.

flowchart LR
    Start([Fetch URL Request]) --> Scheme{HTTP or HTTPS?}
    Scheme -- No --> Block[Raise BlockedURLError]
    Scheme -- Yes --> DNS[Resolve Host DNS]
    DNS --> IPCheck{Private or Metadata IP?}
    IPCheck -- Yes --> Block
    IPCheck -- No --> Req[GET Request allow_redirects=False]
    Req --> Status{3xx Redirect?}
    Status -- Yes --> Limit{Max Redirects Exceeded?}
    Limit -- Yes --> Block
    Limit -- No --> NextURL[Extract Location Header]
    NextURL --> Scheme
    Status -- No --> Success([Return Response Body])