jupyterhub设置cors允许跨域

使用jupyterhub作为后端kernal的时候,前端需要通过ws连接到jupyter notebook(由jupyter hub产生)。这时候在默认情况下会产生跨域的情况,需要进行一些配置。

首先是配置文件,即jupyterhub_config.py,一般juyputerhub的各项配置均在这个文件。 在任意位置添加以下代码

1
2
3
4
5
6
7
origin = '*'
c.JupyterHub.tornado_settings = {
'headers': {
'Access-Control-Allow-Origin': origin,
},
}
c.Spawner.args = ['--NotebookApp.allow_origin={0}'.format(origin)]

其中origin更改为自己的域名,注意不要保留*,否则允许所有网站的cors将会有被别人偷偷调用的风险,不仅不安全,还可能成为别人的打工仔。

另外,如果是在kubernetes中通过ingress搭建的jupyterhub,还需要一个额外的配置,

1
2
3
4
5
6
kind: Ingress
metadata:
annotations:
...
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
nginx.ingress.kubernetes.io/enable-cors: 'true'
文章作者: 王思捷
文章链接: https://sijie.wang/2019/09/29/jupyter-cors/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我爱平铺