Streamlit+CloudFront部署:多页面直接链接WebSocket连接失败
Streamlit+CloudFront+Edge Lambda部署下直接访问子页面的WebSocket连接问题
- 部署情况:Streamlit应用通过CloudFront部署,配合Edge Lambda实现SSO认证重定向,主页可正常访问,通过Streamlit导航栏跳转各子页面也无异常。
- 核心问题:直接输入子页面URL访问(而非通过导航栏跳转)时,出现WebSocket错误:
WebsocketConnection WebSocket onerror,网络详情显示错误码NS_ERROR_WEBSOCKET_CONNECTION_REFUSED。 - 路径差异观察:本地部署时,直接访问页面的
_stcore/stream请求路径为{domainName}/_stcore/stream;而CloudFront部署环境下,该请求路径变为{domainName}/{pageName}/_stcore/stream,多了子页面名称的前缀层级。 - 尝试解决的问题:
- 修改Edge Lambda调整请求URI,使其匹配本地部署的路径格式:虽解决了WebSocket连接失败问题,但会触发重定向到主页,且URI后附加子页面名称;后续从该状态导航至其他页面时,URI会变成
{domainName}/{page1ThatWasRedirected}/{page2ThatWasSidebarNavigated},路径层级混乱。 - 参考相关配置方案尝试将Nginx配置转换为CloudFront配置:因对网络配置细节不熟悉,操作未达到预期效果。
- 修改Edge Lambda调整请求URI,使其匹配本地部署的路径格式:虽解决了WebSocket连接失败问题,但会触发重定向到主页,且URI后附加子页面名称;后续从该状态导航至其他页面时,URI会变成
内容的提问来源于stack exchange,提问作者wyt
相关产品推荐
相关产品推荐

