a month ago
WebSocket upgrades from Firefox return HTTP 400 from the Railway edge proxy. The same requests from Chromium succeed. The issue is that Firefox sends Connection: keep-alive, Upgrade while Chromium sends Connection: Upgrade — both are valid per RFC 6455 §4.1.
Affected: both *.up.railway.app and custom domains.
Firefox request (fails with 400):
Connection: keep-alive, Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Chromium request (succeeds with 101):
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Response headers confirm rejection at edge level:
server: railway-edge
x-railway-cdn-edge: fastly
The request never reaches our application. This affects any WebSocket-based app (Streamlit in our case) for Firefox users.
4 Replies
Status changed to Awaiting Railway Response Railway • about 1 month ago
a month ago
The request reaches your application, but because we incorrectly dropped the hop-by-hop headers, your app returns a 400 status code.
We will look into how we can resolve this.
Status changed to Awaiting User Response Railway • about 1 month ago
a month ago
This thread has been marked as solved automatically due to a lack of recent activity. Please re-open this thread or create a new one if you require further assistance. Thank you!
Status changed to Solved Railway • 28 days ago
a month ago
the issue persists. is there a timeline as to when you will be done looking into it?
Status changed to Awaiting Railway Response Railway • 26 days ago
Status changed to Awaiting User Response Railway • 26 days ago
19 days ago
This thread has been marked as solved automatically due to a lack of recent activity. Please re-open this thread or create a new one if you require further assistance. Thank you!
Status changed to Solved Railway • 19 days ago
2 days ago
The fix has rolled out; WebSocket requests with keep-alive in the upgrade header no longer fail.
Status changed to Awaiting User Response Railway • 1 day ago
Status changed to Solved brody • 1 day ago