Я пытаюсь проксировать JupyterLab через Node js. Все работает нормально, но когда я нажимаю создать любую записную книжку. запрос к /jupyterLab/api/contents/
не выполняется.
Ниже приведены некоторые сведения:
Версия узла - v9.4.0
Версия JupyterLab -
jupyter core : 4.6.3
jupyter-notebook : 5.7.9
qtconsole : 4.5.4
ipython : 5.8.0
ipykernel : 4.10.1
jupyter client : 5.3.4
jupyter lab : 0.33.12
nbconvert : 5.6.1
ipywidgets : 7.5.1
nbformat : 4.4.0
traitlets : 4.3.3
Использование фреймворка Express. [Ref https://expressjs.com/en/starter/generator.html]
NodeJs прокси-пакет - http-proxy-middleware [Ref https://www.npmjs.com/package/http-proxy-middleware]
Приложение узла работает на http://localhost:3001/
JupyterLab работает на http://localhost:8889/
Код узла
var express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
var app = express();
app.use('/jupyterLab/', createProxyMiddleware({
target : "http://localhost:8889/",
ws : true
}));
module.exports = app;
Конфигурация JupyterLab
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8889
c.NotebookApp.base_url = '/jupyterLab/'
c.NotebookApp.token = ''
c.NotebookApp.notebook_dir = "D:jupyterLab"
c.NotebookApp.allow_origin = '*'
c.NotebookApp.tornado_settings = {
'headers': {
'Content-Security-Policy': "frame-ancestors 'self' http://127.0.0.1:3001/ http://127.0.0.1:3001/* http://localhost:3001/ http://localhost:3001/*",
}
}
HTML - Метод 1
<!-- Without proxy, it works perfectly fine. But Node isn't involved here. -->
<iframe
src = "http://localhost:8889/jupyterLab/"
height = "400px"
width = "100%"
></iframe>
[![Screenshot -> Without proxy][1]][1]
HTML - Метод 2 <- Цель. </p>
<!-- With proxy, Works fine, but when we click on Notebook, an API call happens, which stays in pending state for 2-4 min and then fails. -->
<iframe
src = "/jupyterLab/"
height = "400px"
width = "100%"
></iframe>
[![With Proxi - API failing][1]][1]