iframe嵌入jupyterlab,jupyterlab 无法执行代码问题
来源:华佗健康网
iframe嵌入jupyterlab,jupyterlab 无法执行代码问题记录
添加跨域配置
不添加跨域配置可能iframe 无法访问嵌入页面
c.ServerApp.tornado_settings = {
'headers': {
'Content-Security-Policy': "frame-ancestors self *"
}
}
c.ServerApp.allow_origin='*'
jupyterlab 访问
添加好上述配置后,iframe 就可以正常的嵌入jupyterlab.并且可以正常打开访问.如果当你protal或者jupyterlab的url有一个使用的为ip进行访问,就会出现代码无法执行的情况.
具体的错误日志如下:
前端console错误日志:
WebSocket connection to 'ws://xxxx:8888/api/kernels/d2bb345c-041a-443c-a460-36cba62129ec/channels?session_id=539ae71f-7d22-4bea-8098-3624ad5b1a9f' failed:
_createSocket @ jlab_core.be6103fe6f6cc2c18378.js?v=be6103fe6f6cc2c18378:1
后端 log为:
[W 2023-10-10 07:55:05.801 ServerApp] Couldn't authenticate WebSocket connection
[W 2023-10-10 07:55:05.802 ServerApp] 403 GET /api/kernels/d2bb345c-041a-443c-a460-36cba62129ec/channels?session_id=c5ad3a66-59df-4d0b-b5d0-1687e19aaa84 (@140.205.11.252) 1.41ms referer=None
处理方式
日志显示为WebSocket 没有验证.上述不论是页面还是后端日志都指向websocket.但是实际是域名的问题.该问题十分具有迷惑性.
当portal和jupyterlab 都使用域名访问后,则不存在该问题.特此记录一下这个坑爹的问题和这不靠谱的日志.
因篇幅问题不能全部显示,请点此查看更多更全内容