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])