Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect URL path causes repeated "JupyterLab redirected to: ..." popups #12768

Closed
Precioussheep opened this issue Jul 4, 2022 · 15 comments
Closed
Assignees
Labels

Comments

@Precioussheep
Copy link

Description

When providing a url subpath after "/lab" (ie: some.domain/lab/subfolder), if "subfolder" does not exist a repeated popup will occur on page refresh will occur until the server is restarted.

jl-error - clean

Reproduce

  1. Launch a JupyterLab instance (through the method of your choosing, reproducible across jupyter server, jupyter lab & jupyter notebook startup methods). If you have auth enabled, pass the auth step.
  2. Provide a non-existent path as a subpath in your URL. For example: "http://localhost:8888/lab/bad/path". Depth of 1 or more non-existent subpaths will trigger the initial path.
  3. Dismiss the popup (using the "dismiss" button).
  4. Refresh the page. You will notice the popup will again appear.
  5. Repeat steps 3 & 4.

With the same server, you can open a different browser (ie: edge/firefox instead of chrome) and the issue will persist across browsers

This issue was found as it is possible to share docker images with images embedded at a particular path. When images were shared, if a user didn't copy/paste the link as expected, the error would trigger.

Issue does not trigger in "Classic Notebook Mode", as it simply returns a 404.

Expected behavior

The popup should be cleared after the first click of the "dismiss" button.

Context

  • Operating System and version: Linux Ubuntu:20.04 docker image (reproduced in Ubuntu 22.04 WSL - Windows 10.)
  • Browser and version: Chrome 102, Edge 103
  • JupyterLab version: 3.4.3 (through latest Jupyter Base-Notebook docker image & independently through WSL)
Troubleshoot Output (taken from docker image `jupyter/base-notebook:latest` to ensure sanitised paths, reproducable in any jupyterlab environment)
$PATH:
        /opt/conda/bin
        /opt/conda/condabin
        /opt/conda/bin
        /usr/local/sbin
        /usr/local/bin
        /usr/sbin
        /usr/bin
        /sbin
        /bin

sys.path:
/opt/conda/bin
/opt/conda/lib/python310.zip
/opt/conda/lib/python3.10
/opt/conda/lib/python3.10/lib-dynload
/opt/conda/lib/python3.10/site-packages

sys.executable:
/opt/conda/bin/python

sys.version:
3.10.5 | packaged by conda-forge | (main, Jun 14 2022, 07:04:59) [GCC 10.3.0]

platform.platform():
Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.31

which -a jupyter:
/opt/conda/bin/jupyter
/opt/conda/bin/jupyter

pip list:
Package Version
----------------------------- ---------
alembic 1.8.0
anyio 3.6.1
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
asttokens 2.0.5
async-generator 1.10
attrs 21.4.0
Babel 2.10.3
backcall 0.2.0
backports.functools-lru-cache 1.6.4
beautifulsoup4 4.11.1
bleach 5.0.1
blinker 1.4
brotlipy 0.7.0
certifi 2022.6.15
certipy 0.1.3
cffi 1.15.1
charset-normalizer 2.1.0
colorama 0.4.5
conda 4.13.0
conda-package-handling 1.8.1
cryptography 37.0.2
debugpy 1.6.0
decorator 5.1.1
defusedxml 0.7.1
entrypoints 0.4
executing 0.8.3
fastjsonschema 2.15.3
flit_core 3.7.1
greenlet 1.1.2
idna 3.3
importlib-metadata 4.11.4
importlib-resources 5.8.0
ipykernel 6.15.0
ipython 8.4.0
ipython-genutils 0.2.0
jedi 0.18.1
Jinja2 3.1.2
json5 0.9.5
jsonschema 4.6.1
jupyter-client 7.3.4
jupyter-core 4.10.0
jupyter-server 1.18.0
jupyter-telemetry 0.1.0
jupyterhub 2.3.1
jupyterlab 3.4.3
jupyterlab-pygments 0.2.2
jupyterlab-server 2.14.0
libmambapy 0.24.0
Mako 1.2.1
mamba 0.24.0
MarkupSafe 2.1.1
matplotlib-inline 0.1.3
mistune 0.8.4
nbclassic 0.3.7
nbclient 0.6.6
nbconvert 6.5.0
nbformat 5.4.0
nest-asyncio 1.5.5
notebook 6.4.12
notebook-shim 0.1.0
oauthlib 3.2.0
packaging 21.3
pamela 1.0.0
pandocfilters 1.5.0
parso 0.8.3
pexpect 4.8.0
pickleshare 0.7.5
pip 22.1.2
prometheus-client 0.14.1
prompt-toolkit 3.0.30
psutil 5.9.1
ptyprocess 0.7.0
pure-eval 0.2.2
pycosat 0.6.3
pycparser 2.21
pycurl 7.45.1
Pygments 2.12.0
PyJWT 2.4.0
pyOpenSSL 22.0.0
pyparsing 3.0.9
pyrsistent 0.18.1
PySocks 1.7.1
python-dateutil 2.8.2
python-json-logger 2.0.1
pytz 2022.1
pyzmq 23.2.0
requests 2.28.1
ruamel.yaml 0.17.21
ruamel.yaml.clib 0.2.6
ruamel-yaml-conda 0.15.80
Send2Trash 1.8.0
setuptools 62.6.0
six 1.16.0
sniffio 1.2.0
soupsieve 2.3.1
SQLAlchemy 1.4.39
stack-data 0.3.0
terminado 0.15.0
tinycss2 1.1.1
tornado 6.1
tqdm 4.64.0
traitlets 5.3.0
urllib3 1.26.9
wcwidth 0.2.5
webencodings 0.5.1
websocket-client 1.3.3
wheel 0.37.1
zipp 3.8.0

conda list:
# packages in environment at /opt/conda:
#
# Name Version Build Channel
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 2_gnu conda-forge
alembic 1.8.0 pyhd8ed1ab_0 conda-forge
anyio 3.6.1 py310hff52083_0 conda-forge
argon2-cffi 21.3.0 pyhd8ed1ab_0 conda-forge
argon2-cffi-bindings 21.2.0 py310h5764c6d_2 conda-forge
asttokens 2.0.5 pyhd8ed1ab_0 conda-forge
async_generator 1.10 py_0 conda-forge
attrs 21.4.0 pyhd8ed1ab_0 conda-forge
babel 2.10.3 pyhd8ed1ab_0 conda-forge
backcall 0.2.0 pyh9f0ad1d_0 conda-forge
backports 1.0 py_2 conda-forge
backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge
beautifulsoup4 4.11.1 pyha770c72_0 conda-forge
bleach 5.0.1 pyhd8ed1ab_0 conda-forge
blinker 1.4 py_1 conda-forge
brotlipy 0.7.0 py310h5764c6d_1004 conda-forge
bzip2 1.0.8 h7f98852_4 conda-forge
c-ares 1.18.1 h7f98852_0 conda-forge
ca-certificates 2022.6.15 ha878542_0 conda-forge
certifi 2022.6.15 py310hff52083_0 conda-forge
certipy 0.1.3 py_0 conda-forge
cffi 1.15.1 py310h255011f_0 conda-forge
charset-normalizer 2.1.0 pyhd8ed1ab_0 conda-forge
colorama 0.4.5 pyhd8ed1ab_0 conda-forge
conda 4.13.0 py310hff52083_1 conda-forge
conda-package-handling 1.8.1 py310h5764c6d_1 conda-forge
configurable-http-proxy 4.5.1 node17_h7e777a6_1 conda-forge
cryptography 37.0.2 py310h597c629_0 conda-forge
debugpy 1.6.0 py310hd8f1fbe_0 conda-forge
decorator 5.1.1 pyhd8ed1ab_0 conda-forge
defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge
entrypoints 0.4 pyhd8ed1ab_0 conda-forge
executing 0.8.3 pyhd8ed1ab_0 conda-forge
flit-core 3.7.1 pyhd8ed1ab_0 conda-forge
greenlet 1.1.2 py310hd8f1fbe_2 conda-forge
icu 70.1 h27087fc_0 conda-forge
idna 3.3 pyhd8ed1ab_0 conda-forge
importlib-metadata 4.11.4 py310hff52083_0 conda-forge
importlib_metadata 4.11.4 hd8ed1ab_0 conda-forge
importlib_resources 5.8.0 pyhd8ed1ab_0 conda-forge
ipykernel 6.15.0 pyh210e3f2_0 conda-forge
ipython 8.4.0 py310hff52083_0 conda-forge
ipython_genutils 0.2.0 py_1 conda-forge
jedi 0.18.1 py310hff52083_1 conda-forge
jinja2 3.1.2 pyhd8ed1ab_1 conda-forge
json5 0.9.5 pyh9f0ad1d_0 conda-forge
jsonschema 4.6.1 pyhd8ed1ab_0 conda-forge
jupyter_client 7.3.4 pyhd8ed1ab_0 conda-forge
jupyter_core 4.10.0 py310hff52083_0 conda-forge
jupyter_server 1.18.0 pyhd8ed1ab_1 conda-forge
jupyter_telemetry 0.1.0 pyhd8ed1ab_1 conda-forge
jupyterhub 2.3.1 pyhd8ed1ab_0 conda-forge
jupyterhub-base 2.3.1 pyhd8ed1ab_0 conda-forge
jupyterlab 3.4.3 pyhd8ed1ab_0 conda-forge
jupyterlab_pygments 0.2.2 pyhd8ed1ab_0 conda-forge
jupyterlab_server 2.14.0 pyhd8ed1ab_1 conda-forge
keyutils 1.6.1 h166bdaf_0 conda-forge
krb5 1.19.3 h3790be6_0 conda-forge
ld_impl_linux-64 2.36.1 hea4e1c9_2 conda-forge
libarchive 3.5.2 hb890918_3 conda-forge
libcurl 7.83.1 h7bff187_0 conda-forge
libedit 3.1.20191231 he28a2e2_2 conda-forge
libev 4.33 h516909a_1 conda-forge
libffi 3.4.2 h7f98852_5 conda-forge
libgcc-ng 12.1.0 h8d9b700_16 conda-forge
libgomp 12.1.0 h8d9b700_16 conda-forge
libiconv 1.16 h516909a_0 conda-forge
libmamba 0.24.0 hd8a31e3_1 conda-forge
libmambapy 0.24.0 py310hab0e683_1 conda-forge
libnghttp2 1.47.0 h727a467_0 conda-forge
libnsl 2.0.0 h7f98852_0 conda-forge
libsodium 1.0.18 h36c2ea0_1 conda-forge
libsolv 0.7.22 h6239696_0 conda-forge
libssh2 1.10.0 ha56f1ee_2 conda-forge
libstdcxx-ng 12.1.0 ha89aaad_16 conda-forge
libuuid 2.32.1 h7f98852_1000 conda-forge
libuv 1.43.0 h7f98852_0 conda-forge
libxml2 2.9.14 h22db469_1 conda-forge
libzlib 1.2.12 h166bdaf_1 conda-forge
lz4-c 1.9.3 h9c3ff4c_1 conda-forge
lzo 2.10 h516909a_1000 conda-forge
mako 1.2.1 pyhd8ed1ab_0 conda-forge
mamba 0.24.0 py310hf87f941_1 conda-forge
markupsafe 2.1.1 py310h5764c6d_1 conda-forge
matplotlib-inline 0.1.3 pyhd8ed1ab_0 conda-forge
mistune 0.8.4 py310h6acc77f_1005 conda-forge
nbclassic 0.3.7 pyhd8ed1ab_0 conda-forge
nbclient 0.6.6 pyhd8ed1ab_0 conda-forge
nbconvert 6.5.0 pyhd8ed1ab_0 conda-forge
nbconvert-core 6.5.0 pyhd8ed1ab_0 conda-forge
nbconvert-pandoc 6.5.0 pyhd8ed1ab_0 conda-forge
nbformat 5.4.0 pyhd8ed1ab_0 conda-forge
ncurses 6.3 h27087fc_1 conda-forge
nest-asyncio 1.5.5 pyhd8ed1ab_0 conda-forge
nodejs 17.9.0 h96d913c_0 conda-forge
notebook 6.4.12 pyha770c72_0 conda-forge
notebook-shim 0.1.0 pyhd8ed1ab_0 conda-forge
oauthlib 3.2.0 pyhd8ed1ab_0 conda-forge
openssl 1.1.1p h166bdaf_0 conda-forge
packaging 21.3 pyhd8ed1ab_0 conda-forge
pamela 1.0.0 py_0 conda-forge
pandoc 2.18 ha770c72_0 conda-forge
pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge
parso 0.8.3 pyhd8ed1ab_0 conda-forge
pexpect 4.8.0 pyh9f0ad1d_2 conda-forge
pickleshare 0.7.5 py_1003 conda-forge
pip 22.1.2 pyhd8ed1ab_0 conda-forge
prometheus_client 0.14.1 pyhd8ed1ab_0 conda-forge
prompt-toolkit 3.0.30 pyha770c72_0 conda-forge
psutil 5.9.1 py310h5764c6d_0 conda-forge
ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge
pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge
pybind11-abi 4 hd8ed1ab_3 conda-forge
pycosat 0.6.3 py310h5764c6d_1010 conda-forge
pycparser 2.21 pyhd8ed1ab_0 conda-forge
pycurl 7.45.1 py310h2aed498_2 conda-forge
pygments 2.12.0 pyhd8ed1ab_0 conda-forge
pyjwt 2.4.0 pyhd8ed1ab_0 conda-forge
pyopenssl 22.0.0 pyhd8ed1ab_0 conda-forge
pyparsing 3.0.9 pyhd8ed1ab_0 conda-forge
pyrsistent 0.18.1 py310h5764c6d_1 conda-forge
pysocks 1.7.1 py310hff52083_5 conda-forge
python 3.10.5 h582c2e5_0_cpython conda-forge
python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge
python-fastjsonschema 2.15.3 pyhd8ed1ab_0 conda-forge
python-json-logger 2.0.1 pyh9f0ad1d_0 conda-forge
python_abi 3.10 2_cp310 conda-forge
pytz 2022.1 pyhd8ed1ab_0 conda-forge
pyzmq 23.2.0 py310h330234f_0 conda-forge
readline 8.1.2 h0f457ee_0 conda-forge
reproc 14.2.3 h7f98852_0 conda-forge
reproc-cpp 14.2.3 h9c3ff4c_0 conda-forge
requests 2.28.1 pyhd8ed1ab_0 conda-forge
ruamel.yaml 0.17.21 py310h5764c6d_1 conda-forge
ruamel.yaml.clib 0.2.6 py310h5764c6d_1 conda-forge
ruamel_yaml 0.15.80 py310h5764c6d_1007 conda-forge
send2trash 1.8.0 pyhd8ed1ab_0 conda-forge
setuptools 62.6.0 py310hff52083_0 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
sniffio 1.2.0 py310hff52083_3 conda-forge
soupsieve 2.3.1 pyhd8ed1ab_0 conda-forge
sqlalchemy 1.4.39 py310h5764c6d_0 conda-forge
sqlite 3.39.0 h4ff8645_0 conda-forge
stack_data 0.3.0 pyhd8ed1ab_0 conda-forge
terminado 0.15.0 py310hff52083_0 conda-forge
tinycss2 1.1.1 pyhd8ed1ab_0 conda-forge
tk 8.6.12 h27826a3_0 conda-forge
tornado 6.1 py310h5764c6d_3 conda-forge
tqdm 4.64.0 pyhd8ed1ab_0 conda-forge
traitlets 5.3.0 pyhd8ed1ab_0 conda-forge
tzdata 2022a h191b570_0 conda-forge
urllib3 1.26.9 pyhd8ed1ab_0 conda-forge
wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge
webencodings 0.5.1 py_1 conda-forge
websocket-client 1.3.3 pyhd8ed1ab_0 conda-forge
wheel 0.37.1 pyhd8ed1ab_0 conda-forge
xz 5.2.5 h516909a_1 conda-forge
yaml 0.2.5 h7f98852_2 conda-forge
yaml-cpp 0.7.0 h27087fc_1 conda-forge
zeromq 4.3.4 h9c3ff4c_1 conda-forge
zipp 3.8.0 pyhd8ed1ab_0 conda-forge
zlib 1.2.12 h166bdaf_1 conda-forge
zstd 1.5.2 h8a70e8d_2 conda-forge

conda env:
name: base
channels:
- conda-forge
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- alembic=1.8.0=pyhd8ed1ab_0
- anyio=3.6.1=py310hff52083_0
- argon2-cffi=21.3.0=pyhd8ed1ab_0
- argon2-cffi-bindings=21.2.0=py310h5764c6d_2
- asttokens=2.0.5=pyhd8ed1ab_0
- async_generator=1.10=py_0
- attrs=21.4.0=pyhd8ed1ab_0
- babel=2.10.3=pyhd8ed1ab_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
- beautifulsoup4=4.11.1=pyha770c72_0
- bleach=5.0.1=pyhd8ed1ab_0
- blinker=1.4=py_1
- brotlipy=0.7.0=py310h5764c6d_1004
- bzip2=1.0.8=h7f98852_4
- c-ares=1.18.1=h7f98852_0
- ca-certificates=2022.6.15=ha878542_0
- certifi=2022.6.15=py310hff52083_0
- certipy=0.1.3=py_0
- cffi=1.15.1=py310h255011f_0
- charset-normalizer=2.1.0=pyhd8ed1ab_0
- colorama=0.4.5=pyhd8ed1ab_0
- conda=4.13.0=py310hff52083_1
- conda-package-handling=1.8.1=py310h5764c6d_1
- configurable-http-proxy=4.5.1=node17_h7e777a6_1
- cryptography=37.0.2=py310h597c629_0
- debugpy=1.6.0=py310hd8f1fbe_0
- decorator=5.1.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- entrypoints=0.4=pyhd8ed1ab_0
- executing=0.8.3=pyhd8ed1ab_0
- flit-core=3.7.1=pyhd8ed1ab_0
- greenlet=1.1.2=py310hd8f1fbe_2
- icu=70.1=h27087fc_0
- idna=3.3=pyhd8ed1ab_0
- importlib-metadata=4.11.4=py310hff52083_0
- importlib_metadata=4.11.4=hd8ed1ab_0
- importlib_resources=5.8.0=pyhd8ed1ab_0
- ipykernel=6.15.0=pyh210e3f2_0
- ipython=8.4.0=py310hff52083_0
- ipython_genutils=0.2.0=py_1
- jedi=0.18.1=py310hff52083_1
- jinja2=3.1.2=pyhd8ed1ab_1
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=4.6.1=pyhd8ed1ab_0
- jupyter_client=7.3.4=pyhd8ed1ab_0
- jupyter_core=4.10.0=py310hff52083_0
- jupyter_server=1.18.0=pyhd8ed1ab_1
- jupyter_telemetry=0.1.0=pyhd8ed1ab_1
- jupyterhub=2.3.1=pyhd8ed1ab_0
- jupyterhub-base=2.3.1=pyhd8ed1ab_0
- jupyterlab=3.4.3=pyhd8ed1ab_0
- jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
- jupyterlab_server=2.14.0=pyhd8ed1ab_1
- keyutils=1.6.1=h166bdaf_0
- krb5=1.19.3=h3790be6_0
- ld_impl_linux-64=2.36.1=hea4e1c9_2
- libarchive=3.5.2=hb890918_3
- libcurl=7.83.1=h7bff187_0
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libffi=3.4.2=h7f98852_5
- libgcc-ng=12.1.0=h8d9b700_16
- libgomp=12.1.0=h8d9b700_16
- libiconv=1.16=h516909a_0
- libmamba=0.24.0=hd8a31e3_1
- libmambapy=0.24.0=py310hab0e683_1
- libnghttp2=1.47.0=h727a467_0
- libnsl=2.0.0=h7f98852_0
- libsodium=1.0.18=h36c2ea0_1
- libsolv=0.7.22=h6239696_0
- libssh2=1.10.0=ha56f1ee_2
- libstdcxx-ng=12.1.0=ha89aaad_16
- libuuid=2.32.1=h7f98852_1000
- libuv=1.43.0=h7f98852_0
- libxml2=2.9.14=h22db469_1
- libzlib=1.2.12=h166bdaf_1
- lz4-c=1.9.3=h9c3ff4c_1
- lzo=2.10=h516909a_1000
- mako=1.2.1=pyhd8ed1ab_0
- mamba=0.24.0=py310hf87f941_1
- markupsafe=2.1.1=py310h5764c6d_1
- matplotlib-inline=0.1.3=pyhd8ed1ab_0
- mistune=0.8.4=py310h6acc77f_1005
- nbclassic=0.3.7=pyhd8ed1ab_0
- nbclient=0.6.6=pyhd8ed1ab_0
- nbconvert=6.5.0=pyhd8ed1ab_0
- nbconvert-core=6.5.0=pyhd8ed1ab_0
- nbconvert-pandoc=6.5.0=pyhd8ed1ab_0
- nbformat=5.4.0=pyhd8ed1ab_0
- ncurses=6.3=h27087fc_1
- nest-asyncio=1.5.5=pyhd8ed1ab_0
- nodejs=17.9.0=h96d913c_0
- notebook=6.4.12=pyha770c72_0
- notebook-shim=0.1.0=pyhd8ed1ab_0
- oauthlib=3.2.0=pyhd8ed1ab_0
- openssl=1.1.1p=h166bdaf_0
- packaging=21.3=pyhd8ed1ab_0
- pamela=1.0.0=py_0
- pandoc=2.18=ha770c72_0
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parso=0.8.3=pyhd8ed1ab_0
- pexpect=4.8.0=pyh9f0ad1d_2
- pickleshare=0.7.5=py_1003
- pip=22.1.2=pyhd8ed1ab_0
- prometheus_client=0.14.1=pyhd8ed1ab_0
- prompt-toolkit=3.0.30=pyha770c72_0
- psutil=5.9.1=py310h5764c6d_0
- ptyprocess=0.7.0=pyhd3deb0d_0
- pure_eval=0.2.2=pyhd8ed1ab_0
- pybind11-abi=4=hd8ed1ab_3
- pycosat=0.6.3=py310h5764c6d_1010
- pycparser=2.21=pyhd8ed1ab_0
- pycurl=7.45.1=py310h2aed498_2
- pygments=2.12.0=pyhd8ed1ab_0
- pyjwt=2.4.0=pyhd8ed1ab_0
- pyopenssl=22.0.0=pyhd8ed1ab_0
- pyparsing=3.0.9=pyhd8ed1ab_0
- pyrsistent=0.18.1=py310h5764c6d_1
- pysocks=1.7.1=py310hff52083_5
- python=3.10.5=h582c2e5_0_cpython
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python-fastjsonschema=2.15.3=pyhd8ed1ab_0
- python-json-logger=2.0.1=pyh9f0ad1d_0
- python_abi=3.10=2_cp310
- pytz=2022.1=pyhd8ed1ab_0
- pyzmq=23.2.0=py310h330234f_0
- readline=8.1.2=h0f457ee_0
- reproc=14.2.3=h7f98852_0
- reproc-cpp=14.2.3=h9c3ff4c_0
- requests=2.28.1=pyhd8ed1ab_0
- ruamel.yaml=0.17.21=py310h5764c6d_1
- ruamel.yaml.clib=0.2.6=py310h5764c6d_1
- ruamel_yaml=0.15.80=py310h5764c6d_1007
- send2trash=1.8.0=pyhd8ed1ab_0
- setuptools=62.6.0=py310hff52083_0
- six=1.16.0=pyh6c4a22f_0
- sniffio=1.2.0=py310hff52083_3
- soupsieve=2.3.1=pyhd8ed1ab_0
- sqlalchemy=1.4.39=py310h5764c6d_0
- sqlite=3.39.0=h4ff8645_0
- stack_data=0.3.0=pyhd8ed1ab_0
- terminado=0.15.0=py310hff52083_0
- tinycss2=1.1.1=pyhd8ed1ab_0
- tk=8.6.12=h27826a3_0
- tornado=6.1=py310h5764c6d_3
- tqdm=4.64.0=pyhd8ed1ab_0
- traitlets=5.3.0=pyhd8ed1ab_0
- tzdata=2022a=h191b570_0
- urllib3=1.26.9=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- websocket-client=1.3.3=pyhd8ed1ab_0
- wheel=0.37.1=pyhd8ed1ab_0
- xz=5.2.5=h516909a_1
- yaml=0.2.5=h7f98852_2
- yaml-cpp=0.7.0=h27087fc_1
- zeromq=4.3.4=h9c3ff4c_1
- zipp=3.8.0=pyhd8ed1ab_0
- zlib=1.2.12=h166bdaf_1
- zstd=1.5.2=h8a70e8d_2
prefix: /opt/conda

Command line output left out due to length of issue.

@welcome
Copy link

welcome bot commented Jul 4, 2022

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! 🤗

If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively.
welcome
You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! 👋

Welcome to the Jupyter community! 🎉

@jupyterlab-probot jupyterlab-probot bot added the status:Needs Triage Applied to new issues that need triage label Jul 4, 2022
@JasonWeill
Copy link
Contributor

JasonWeill commented Jul 7, 2022

I see the dialog box appear on refresh when I using tip of master (the 4.x series) and Firefox ESR. Another dev tried with 3.4.3 and Firefox and Chrome.

We were also able to reproduce this issue across browsers, as the original author did:

  1. Start JupyterLab.
  2. In Chrome, go to https://localhost:8888/lab/foo/bar/baz . Get error. Dismiss it.
  3. In Firefox, go to https://localhost:8888/lab . The same error, referring to /foo/bar/baz, appears, even though nobody has tried to access that path in Firefox.

@MaryArgentum
Copy link

Hi, I would like to ask if there is any updates on this issue? I have the same problem.
Thanks

@jpuerto-psc
Copy link

Happy New Year all, @JasonWeill - is there any movement on this?

@JasonWeill
Copy link
Contributor

I can still reproduce this using tip-of-master in JupyterLab (4.x).

@jpuerto-psc
Copy link

Thanks, is there any plan for resolution?

@JasonWeill
Copy link
Contributor

Not that I'm aware of; we welcome pull requests if you've found a resolution for this issue.

@ladislavsladecekfirmaseznamcz

This issue may be duplicated by jupyterlab/jupyterlab_server#314 .

@YubinXie
Copy link

YubinXie commented May 19, 2023

after some back and forth install and uninstall of jupyterlab font witj jupyter lab 4.0, i got this error too:
The path: /lab/api/update was not found. JupyterLab redirected to: /

@iandesj
Copy link

iandesj commented Jul 26, 2023

Any update on this? We're still seeing this on jupyterlab version 3.6.1

@JasonWeill
Copy link
Contributor

Still present in tip of main (4.1.0)

@JasonWeill
Copy link
Contributor

This may be an issue in JupyterLab Server (not to be confused with Jupyter Server).

The NotFoundHandler, mentioned at the very end of add_handlers, sets notFoundUrl in the page config object:

https://github.com/jupyterlab/jupyterlab_server/blob/8b8182de949a416423b9cb15c53a19ceb89bd8c5/jupyterlab_server/handlers.py#L176-L184

… however, there is no "found" handler that _un_sets notFoundUrl. This means that once the page config gets this key once, it perpetuates from request to request, because the page config is written into each JupyterLab HTML page.

@JasonWeill
Copy link
Contributor

Upon further investigation, this regular expression in Jupyter Server is supposed to detect valid JupyterLab URLs, but it is incomplete:

https://github.com/jupyterlab/jupyterlab_server/blob/8b8182de949a416423b9cb15c53a19ceb89bd8c5/jupyterlab_server/handlers.py#L33-L35

In short, this does not capture solely valid URLs, such as those starting with /lab/tree. We need to intercept malformed paths after /lab/ to prevent this from occurring.

@itsmevichu
Copy link
Contributor

Hi @JasonWeill, I have raised a PR for this issue, please have a look into it.

@JasonWeill
Copy link
Contributor

Fixed by jupyterlab/jupyterlab_server#436 — thank you @itsmevichu !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants