The current implementation causes duplicate `Content-Type` headers when users override headers in the UI or use OAuth2 authentication with the agent. Web servers receive multiple `Content-Type` headers which causes undefined behavior and 400 errors for backends that don't accept duplicate headers. This also fixes inconsistent behavior when overriding the `Content-Type` header with custom values (e.g., `application/json;v=2`). While HTTP/1.1 headers are case-insensitive per RFC 7230, inconsistent handling across server implementations can treat differently-cased variations (e.g., "Content-Type" vs "content-type") as distinct headers. HTTP/2 (RFC 7540) mandates converting all header field names to lowercase, which would prevent this issue. This patch removes the automatic content-type header insertion, allowing user-defined headers to take precedence without duplication. The is a temporary workaround until we implement a HTTP/2-compliant solution with proper normalization. This was implemented initially to support moving lower level handling towards the kernel, although since the larger refactor has been slightly deferred in favor of stability, this change is suitable for current state. This will be revisited when we implement HTTP/2 compliant header handling in the kernel layer as part of our upcoming kernel efforts. Use the following request to test this out on Desktop app and Agent and override `Content-Type` header to `application/json;=v2`: ``` curl --request POST \ --url 'https://echo.qubit.codes/?qp=1' \ --header 'Content-Type: application/json;v=2' \ --data '{ "test-key": "test-value" }' ``` |
||
|---|---|---|
| .. | ||
| crates/webapp-bundler | ||
| plugin-workspace | ||
| public | ||
| src | ||
| src-tauri | ||
| .gitignore | ||
| connection-to-self-hosted-instance.png | ||
| desktop-app.png | ||
| index.html | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Hoppscotch Desktop App ALPHA
Hoppscotch Desktop App is a cross-platform Hoppscotch app built with Tauri V2
Now with the ability to connect to Self-Hosted instances
Install Hoppscotch Desktop App
- Download the latest version of Hoppscotch Desktop App
- Open the downloaded file.
- Follow the on-screen instructions to install Hoppscotch Desktop App.
- Open Hoppscotch Desktop App.
Access Hoppscotch
Hoppscotch Cloud Edition for Individuals
Access Hoppscotch Cloud Edition from Hoppscotch Desktop App:
- Open Hoppscotch Desktop App.
- Click the Hoppscotch logo in the top-left corner.
- Click "HOPPSCOTCH CLOUD".
- Sign in with your Hoppscotch Cloud account to access your workspaces and collections.
Hoppscotch Self-Hosted Edition for Community
Note
To enable desktop app support for your self-hosted Hoppscotch instance, make sure to update the
WHITELISTED_ORIGINSenvironment variable in your.envfile with your deployment URL.e.g. to allow connection to
https://hoppscotch.mydomain.comyou need to addapp://hoppscotch_mydomain_com(MacOS, Linux) andhttp://app.hoppscotch_mydomain_com(Windows) to theWHITELISTED_ORIGINSenvironment variable.WHITELISTED_ORIGINS=...existing_origins,app://hoppscotch_mydomain_com,http://app.hoppscotch_mydomain_com
Add your self-hosted Hoppscotch Community Edition instance to Hoppscotch Desktop App:
- Open Hoppscotch Desktop App.
- Click the Hoppscotch logo in the top-left corner.
- Click "Add an instance".
- Enter the URL of your self-hosted Hoppscotch instance.
- Click "Connect".
Tip
You can also self-host Hoppscotch Desktop App.
- Install and generate the selfhost web app:
cd ../hoppscotch-selfhost-web pnpm install pnpm generate- Build the webapp bundler:
cd crates/webapp-bundler cargo build --release- Bundle the web app:
cd target/release ./webapp-bundler --input [path-to-dist-directory] --output [path-to-hoppscotch-desktop]/bundle.zip --manifest [path-to-hoppscotch-desktop]/manifest.json- Run the Tauri development server:
or the following for production build:cd src-tauri pnpm tauri devcd src-tauri pnpm tauri dev
Note
[path-to-dist-directory]should point to thedistdirectory created by thepnpm generatecommand in step 1.
Hoppscotch Self-Hosted Edition for Enterprise
Note
To enable desktop app support for your self-hosted Hoppscotch instance, make sure to update the
WHITELISTED_ORIGINSenvironment variable in your.envfile with your deployment URL.e.g. to allow connection to
https://hoppscotch.mydomain.comyou need to addapp://hoppscotch_mydomain_com(MacOS, Linux) andhttp://app.hoppscotch_mydomain_com(Windows) to theWHITELISTED_ORIGINSenvironment variable.WHITELISTED_ORIGINS=...existing_origins,app://hoppscotch_mydomain_com,http://app.hoppscotch_mydomain_com
Add your self-hosted Hoppscotch Enterprise Edition instance to Hoppscotch Desktop App:
- Open Hoppscotch Desktop App.
- Click the Hoppscotch logo in the top-left corner.
- Click "Add an instance".
- Enter the URL of your self-hosted Hoppscotch instance.
- Click "Connect".
Note
For docker setup, the desktop app uses a server at port
3200, and it is part of the frontend container:❯ docker run -p 3000:3000 -p 3200:3200 hoppscotch/hoppscotch-frontendOnce the container is live, you can enter
[your-ip]:3200or simply the base address of the instance if you are using subpath access.

