Hoppscotch CORS: Browser Extension vs Proxy – A Practical Decision Guide
Hoppscotch offers a Browser Extension and a Proxy mode to bypass CORS. This guide explains how each works, when to use them, and how to verify the bypass with DevTools.
06 Feb 2026, 00:05 UTC

Problem: The CORS Wall in Hoppscotch
When you send a request from Hoppscotch to an API that does not declare your Hoppscotch origin in its Access‑Control‑Allow‑Origin header, the browser blocks the response. The console shows a typical message:
Access to fetch at 'https://api.example.com/data' from origin 'https://hoppscotch.io' has been blocked by CORS policy: No 'Access‑Control‑Allow‑Origin' header is present on the requested resource.
Because Hoppscotch is a Progressive Web App that runs entirely in the browser, it cannot bypass the browser’s security policy on its own. The tool therefore offers two alternatives: a browser extension that intercepts requests, or a server‑side proxy that forwards the call.
Architecture Overview
- Client‑side (Extension): Hoppscotch sends the request directly from the user’s machine to the target API. The extension modifies the request headers so the browser treats it as if it came from an allowed origin.
- Server‑side (Proxy): Hoppscotch forwards the request to
https://proxy.hoppscotch.io, which then contacts the target API and relays the response back. The browser never sees the target domain directly.
Browser Extension – How It Works
The Hoppscotch extension is a lightweight add‑on for Chromium‑based browsers (Chrome, Edge, Brave). It uses the chrome.webRequest and chrome.webRequestBlocking APIs to intercept outgoing HTTP requests. The extension adds an Origin header that matches the Hoppscotch origin, and optionally an Access‑Control‑Request‑Method header for pre‑flight requests. By doing so, the target server sees the request as coming from an allowed origin and returns the response without triggering the browser’s CORS check.
Key points:
- Requires the user to grant
webRequestandwebRequestBlockingpermissions. - Only works in browsers that expose the WebRequest API; Firefox support is experimental and may not cover all request types.
- Does not add extra network hops – the request goes straight from the client to the API.
- Does not modify the API’s response; all headers and body are forwarded unchanged.
Example manifest.json fragment (for reference only):
{
"name": "Hoppscotch CORS Bypass",
"version": "1.0",
"manifest_version": 3,
"permissions": ["webRequest", "webRequestBlocking", ""]
}
Proxy Mode – How It Works
Proxy mode is toggled from within the Hoppscotch request panel. When active, the tool rewrites the request URL to point to https://proxy.hoppscotch.io and includes the original target URL in a query parameter. The Hoppscotch proxy server then performs the HTTP call on behalf of the client and streams the response back.
Key points:
- Zero user installation; works in any browser.
- Adds one additional network hop, which can increase latency by 20–50 ms depending on the proxy’s location.
- All traffic passes through the proxy, so sensitive data is exposed to the Hoppscotch infrastructure.
- Some APIs reject requests from the proxy’s IP or require IP whitelisting; in such cases proxy mode will fail.
Decision Factors
Choosing between the two modes depends on the following trade‑offs:
| Factor | Browser Extension | Proxy Mode |
|---|---|---|
| Installation effort | Install from the Chrome Web Store and enable permissions | Toggle in UI – no installation |
| Latency | Lowest – direct request | Higher – one extra hop |
| Security exposure | Data stays on the client until it reaches the API | All traffic passes through Hoppscotch proxy |
| Browser compatibility | Chromium‑based only (experimental in Firefox) | All browsers supported |
| Complex requests (WebSockets, multipart) | Supported – the extension forwards the request unchanged | Proxy may not support WebSocket upgrades; consult proxy docs |
Worked Example – Verifying the Bypass
- Baseline (no extension, no proxy)
- Open
https://hoppscotch.ioand create a GET request tohttps://api.example.com/data. - Send the request.
- Open DevTools (F12) → Network tab. You will see an
OPTIONSpre‑flight request that fails with a CORS error.
- Open
- Using the Extension
- Navigate to
chrome://extensions, enable Developer mode, and click Load unpacked. Point it at the extension folder. - Confirm the permissions dialog (webRequest, webRequestBlocking, all URLs).
- Back in Hoppscotch, ensure the Extension toggle is on.
- Send the same request. In the Network tab you should now see only the final GET request to
https://api.example.com/datawith no pre‑flight. - Check the response – it should contain the data returned by the API.
- Navigate to
- Using Proxy Mode
- Disable the extension or open a new incognito window (extensions are disabled by default there).
- In Hoppscotch, toggle the Proxy option for the request.
- Send the request. The Network tab will show a request to
https://proxy.hoppscotch.iothat includes the original target URL in the query string. - Follow the chain to confirm the proxy forwards the response.
Limitations and Risks
- Extension permissions: Granting
webRequestBlockingallows the extension to alter any request from the browser. Users should trust the source before enabling it. - Browser support: Firefox may not fully support the required WebRequest APIs; users may experience incomplete interception.
- Proxy IP whitelisting: If the target API restricts access to specific IPs, the proxy’s IP will be visible and the request may be rejected.
- Rate limits: The Hoppscotch proxy is a shared resource; heavy usage may hit rate limits or be throttled.
- WebSocket support: The proxy mode does not currently support WebSocket upgrade requests; the extension can forward them if the browser permits.
- HTTPS and certificate validation: The extension forwards HTTPS requests unchanged; any TLS issues will surface as normal browser errors.
Conclusion – Pick the Right Path for Your Workflow
For developers who can install a browser extension and prioritize minimal latency and strict data privacy, the Browser Extension is the preferred choice. It keeps all traffic on the client side and only requires a one‑time permission grant.
When extension installation is not possible—such as on managed corporate machines, or when you need a solution that works across all browsers—Proxy mode offers a zero‑install fallback. Just be aware of the additional latency and the fact that your requests travel through Hoppscotch’s public proxy.
Regardless of the mode, you can verify the behavior with the browser’s Network tab and by inspecting the request headers. If you encounter unexpected CORS errors after enabling the extension, double‑check that the extension is active and that your browser supports the required WebRequest APIs.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.