Working fine via public IP address, but problems with DNS

I have a Streamlit app running in a docker container on an EC2 instance.

When I point my browser at the instance’s public IP address, everything works great.

But when I access the app via the URL of the DNS record I created, the page loads but it looks like websockets aren’t working:

main.25d88faa.chunk.js:1 WebSocket connection to 'ws://grocery-demo.davidchudzicki.com/stream' failed: Error during WebSocket handshake: Unexpected response code: 403

WebSocket connection to 'ws://grocery-demo.davidchudzicki.com/stream' failed: WebSocket is closed before the connection is established.

Anyone have advice?

1 Like

Hey @dchudz ,

It looks like a CORS problem, did you try configuring browser.serverAddress with your url ? or even disabling CORS using server.enableCORS ?

2 Likes

That’s definitely the problem. Thank you!

Glad that you managed to figure it out, @dchudz. I have a question, and I hope you don’t mind, and please accept my apology for jumping in.

How did you manage to hide the port part in your URL? Or is just listening to port 80, hence it’s not visible?

Thanks in advance!

@mzeidhassan sorry, I don’t remember exactly what I was doing when I posted this – Streamlit was running on port 5000, and there was some mapping between ports in the AWS settings.

Later I used the approach from this tutorial, hosting on Heroku with port = $PORT in Streamlit’s config (apparently $PORT is an environment variable Heroku uses to tell you what part it will send requests too).

1 Like

Thanks @dchudz for taking the time to get back to me. I appreciate it.