mirror of
https://github.com/hoppscotch/hoppscotch.git
synced 2026-04-26 01:06:00 +03:00
[GH-ISSUE #5186] [bug]: Can't login to my self-hosted deployment from desktop app #1978
Labels
No labels
CodeDay
a11y
browser limited
bug
bug fix
cli
core
critical
design
desktop
discussion
docker
documentation
duplicate
enterprise
feature
feature
fosshack
future
good first issue
hacktoberfest
help wanted
i18n
invalid
major
minor
need information
need testing
not applicable to hoppscotch
not reproducible
pull-request
question
refactor
resolved
sandbox
self-host
spam
stale
testmu
wip
wont fix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hoppscotch#1978
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @m-adawi on GitHub (Jun 23, 2025).
Original GitHub issue: https://github.com/hoppscotch/hoppscotch/issues/5186
Originally assigned to: @CuriousCorrelation on GitHub.
Is there an existing issue for this?
Platform
Desktop App
Browser
Firefox
Operating System
Windows
Bug Description
I'm self-hosting Hoppscotch and using Google OAuth for login, it's secured with SSL. everything in the browser is working fine, but when I try to login from desktop keeps loading forever:

I also find this error in the console logs of the desktop app:
My .env file:
My docker-compose file (I'm using Traefik as a reverse proxy):
Steps to reproduce
Deployment Type
Self-hosted (on-prem deployment)
Version
2025.5.3
@CuriousCorrelation commented on GitHub (Jun 23, 2025):
Hey @m-adawi! This is a very well written bug report.
This looks very similar to the issue we tracked down in #4986. The
auth/cookies_not_founderror with Traefik makes me wonder if we might be dealing with the same header normalization problem we saw with Istio, even tho thecontent-typeheader normalization part from that discussion is resolved, this might be something else yet similar.If you can, we can run through some of the tests we did to figure out the issue:
First, let's make sure the basic authentication flow works. You'll need to grab an access token from your browser (check developer tools > Storage > Cookies for
access_token), then test:This should return your user details successfully. If it doesn't, we have a different problem.
Also check response headers, which was the main cause in #4986.
When you try to log in to the desktop app:
plugin:relay|executerequestIn #4986, we discovered that Istio was normalizing all HTTP headers to lowercase, but Hoppscotch expected properly-cased headers. The authentication flow would get tokens successfully but fail when trying to parse the user details response.
Also worth checking the same GraphQL query directly in the Hoppscotch desktop app. (Create a new request, set the URL to your GraphQL endpoint, add auth headers manually, and send - this should work fine)
If this is the same header issue, you might need to configure Traefik to preserve header case. Unfortunately I'm not as familiar with Traefik as I was with Istio, but there should be middleware options to control header formatting.
Let me know what you find with those diagnostics!
@m-adawi commented on GitHub (Jun 24, 2025):
Hello @CuriousCorrelation, Thanks to you I was able to identify the problem
When I tried to do the curl command you gave me I got this error:
It turns out I was serving our leaf SSL certificate without intermediate ones. This didn't cause an issue in web browsers because they automatically fetch intermediate certs sometimes.
I updated my SSL cert in Traefik and included the full certificate chain and now it's working fine in the desktop app.
But I noticed a weird thing in the desktop app when I was checking for the headers
The request says 200 OK

But when I check for the response I see the same SSL error:
Also since you asked for the headers in curl it seems they are normalized:
@CuriousCorrelation commented on GitHub (Jun 24, 2025):
That’s excellent @m-adawi, glad I could help.
The weird response you're seeing is actually normal behavior. The
plugin:relay|executeis just a comms channel between the app's frontend and the underlying networking machinery.What you're seeing is
Status 200 OKwhich refers to the communication with the networking stack that succeeded andResponse content (SSL error)is the error the networking stack encountered when trying to reach your server.Think of it like this: the app successfully asked the networking stack "please make this HTTP request," and the stack successfully responded "I tried but got an SSL error." So the IPC call succeeds (200) but contains the HTTP failure details.
Since you've fixed your SSL certificates, you shouldn't see that SSL error in the response content anymore when making actual requests but just to clarify: Are you still experiencing any issues with the desktop app login, or is everything working fine now after fixing the certificate chain? Just want to make sure you're not blocked by anything else.
And yes, as we suspected, headers were being normalized to lowercase by Traefik, seems like this is the expected behavior for Istio and Traefik, although the app handles it correctly now. This was just in case we were seeing something else entirely.
@m-adawi commented on GitHub (Jun 24, 2025):
@CuriousCorrelation I can login from the desktop app now, so the problem is solved. Thanks for your support
Oh I see. But I think the app should at least show the SSL error to the user instead of just being stuck at the login spinning gear. This makes it harder to identify the problem. Even when I checked the dev tools network tab in the desktop app first time all I saw 200 OK responses and I didn't think of checking the response payloads
@CuriousCorrelation commented on GitHub (Jun 24, 2025):
Awesome, glad to hear the login is working now! 🎉
Yes, showing SSL errors during login would be much more helpful for troubleshooting and this is definitely something we're working on improving.
The implementation is a bit more complex than we anticipated, since the networking stack interacts with the underlying platform at a different level from the Hoppscotch frontend (think of the desktop app as a specialized browser), but as mentioned above - definitely something we're working on improving.
Also thanks for the very well written report and detailed troubleshooting. It helps us improve the experience for self-hosted users and serves as great documentation for someone stumbling upon this in the future.
Closing this issue as resolved. cc @liyasthomas