您的当前位置:首页正文

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 都使用域名访问后,则不存在该问题.特此记录一下这个坑爹的问题和这不靠谱的日志.

因篇幅问题不能全部显示,请点此查看更多更全内容