Code-Server远程端Jupyter不能正常渲染的解决方案
这是一个网络上几乎没有提及的问题,故特此记录。
问题:Code-Server页面可开,但无法加载Jupyter Notebook内容
问题描述:
在电脑/移动端上可通过HTTP打开Code-Server的VSCode界面,也可以正常编辑.py文件,但点击.ipynb jupyter notebook文件后无法正常渲染,使用文本编辑器可以显示出源代码但Jupyter的Cell加载不出,上方一直有蓝条滑动。
注意此时当首次登陆进VsCode界面时右下角会有弹窗提示insecure context,clipboard等功能不可用。
Code-Server已经安装Jupyter和Python插件如下图。
可能的原因:
极有可能是Code-Server提供的Jupyter插件的问题,打开插件设置的第一行就可以看到安全相关的连接设置,结合insecure context的提示这是极为关键的一条设置。
默认情况下Allow Unauthorized Remote Connection是关闭的,但将User,Remote和Workspace三处的选项都打开后重启服务仍然没能解决问题。此时仍然有insecure context弹窗。
使用Port Forward方法在远程端HTTP打开也是可以正常查看的。因此是远程端与服务器之间连接出了问题。
解决方案:
必须使用安全的方式访问Jupyter,也就是得要使用HTTPS协议。配置好HTTPS后通过HTTPS访问就可以正常显示Jupyter Notebook中的内容了。
即使是在内网ip方式访问下HTTPS也是必须的。博主对内网ip的解决方案是自签名CA证书+NGINX反向代理,将设置有SAN(Subject Alternative Name)的.crt证书,检查CN(Common Name)为ip地址,下载到浏览器中可正常HTTPS访问。
其他问题:IOS15.5无法渲染Code-Server VsCode界面
问题描述:
博主的iPad之前工作在IOS15.5系统下,safari无法打开code-server输入密码后的vscode界面,表现为加载完毕后全屏空白,输入无响应。改用夸克、FireFox后都如此(Chrome需要更高版本系统才能安装)。
可能的原因:
Code-Server本地运行需要WebSocket环境,而IOS15的WebSocket疑似存在Bug。
关于iOS15/16无法捕获WebSocket数据的公告https://www.mobiledebug.com/Help/help_11075.shtml
解决方案:
更新到iPadOS17后safari可正常打开页面,其他浏览器亦然。