我已经在 jupyter 笔记本上运行了大约 26 小时的脚本;我并没有真正将我的计算机用于其他任何事情,但它需要运行这个需要大约 30 小时才能完成的程序。大约 21 小时后,它停止保存,我的终端出现了这个:
403 PUT /api/contents/[file.ipynb] (::1): '_xsrf' argument missing from POST
其中 [file.ipynb] 是我的 jupyter 笔记本的位置。它还说:
'_xsrf' argument missing from post
再次在笔记本的右上角。该程序仍在运行,我不想重新启动 jupyter notebook 并且必须再次运行该程序,因为我有截止日期,我还能做些什么吗?
我正在使用谷歌浏览器,但我的代码中没有 LastPass 扩展名或任何 '%' 字符,正如另一篇文章所建议的那样。
谢谢你的帮助!
%store
魔法存储您的重要变量。这样,即使您的笔记本已关闭且未保存,您的变量仍然存在,因此您可以再次显示它们。
我发现的最简单的方法是:
https://github.com/nteract/hydrogen/issues/922#issuecomment-405456346
只需在同一个内核上打开另一个(非运行的、现有的)笔记本,问题就神奇地消失了;您可以再次保存之前显示 _xsrf
错误的笔记本。
如果您已经关闭了 Jupyter 主页,则可以在启动 Jupyter 的终端上找到指向它的链接。
我遇到的解决方案似乎太简单了,但确实有效。转到 /tree aka Jupyter 主页并刷新浏览器。工作。
唯一对我有用的解决方案是:
我在粘贴的 chrome 中打开了一个新标签:http://localhost:8888/?token=...... 然后我去了我原来的笔记本,我能够保存它
我每天都使用 jupyter 笔记本,之前从未遇到过这个问题......直到今天。我整天打开笔记本,但它没有运行任何东西,然后无缘无故地停止自动保存,右上角出现 '_xsrf' argument missing from POST
错误消息。仅供参考 - 这是一个 python3 笔记本。
我不知道这个问题的原因,但我最近将我的 python3 版本升级到 3.7.2 并将我的所有站点包升级到几天前的最新版本,这可能是原因。
至于解决方案,正如@AlexK 评论中所建议的那样,我在新窗口中打开了同一个笔记本(实际上是不同的浏览器),使用
jupyter notebook list
在终端中获取带有登录令牌的 URL。
这导致我的笔记本再次打开并可以保存,但我上次成功自动保存后输入的信息丢失了。值得庆幸的是,我损坏的实例仍然打开并且除了保存之外还可以工作,所以我可以简单地复制并粘贴信息然后点击保存。因此,如果您尝试此操作,请保持损坏的实例处于打开状态!
只需刷新树选项卡对我有用。
当我单击“保存”按钮时,出现此错误。根据这篇文章和其他网站的答案,我刚刚找到了解决方案。我的 jupyter notebook 是从 pip 安装的。所以我通过在 Windows 命令行中输入“jupyter notebook”来访问它。
(1)打开一个新的命令窗口,然后打开一个新的jupyter notebook。尝试在旧笔记本中再次保存,这次,错误是“失败:禁止”
(2) 然后在旧笔记本中,点击“下载为”,会弹出一个新窗口询问您的令牌。
https://i.stack.imgur.com/JKwLM.png
(3)打开另一个命令窗口,然后打开另一个jupyter notebook,输入'jupyter notebook list',将'token='之后和::之前的代码复制到你刚刚看到的框中。你可以节省这个时间。如果失败,您可以尝试列表中的另一个令牌
jupyter notebook list
将输出一个长 url,其中一部分是出现在 token=
和 ::
之间的一长串字符。将此字符串复制并粘贴到步骤(2)中的“密码或令牌”框中,原始 jupyter 笔记本中的“禁止”错误将消失。
我也遇到了同样的错误。我刚刚打开了另一个未运行的 Juputer 笔记本,错误自动消失了。
就我而言,通过单击“内核”(显示在笔记本顶部)然后单击“重新连接”来解决此问题。
补充说明:在某些版本的 Jupyter 中,没有“重新连接”。
'_xsrf' argument missing...
错误仍然存在。
解决此问题的一种解决方法是:
下载无法保存的笔记本,方法是:文件 --> 下载为 --> 笔记本 (ipynb)。通过单击 jupyter 浏览器 UI 上的下载文件打开下载的笔记本
现在,您应该可以从 jupyter UI 中保存(或重命名)这个笔记本了
您可以通过启动 JupyterLab 来禁用 XSRF 检查:
jupyter lab --ServerApp.disable_check_xsrf=True
这可能意味着您的服务器未经过令牌身份验证。例如,您可能已经使用以下命令启动了 JupyterLab:
jupyter lab --NotebookApp.token='' --NotebookApp.password=''
这也可能意味着您在本地计算机上运行 JupyterLab,并且无法远程访问您的服务器,所以这很好。
但一般要注意,如果您的服务器没有身份验证,那么它很容易受到 XSRF 的攻击。
使用 nvidia docker 中的图像,我遇到了同样的问题(无法保存笔记本和 .py 模块)。解决方案只是在 jupyter 中打开一个终端,无需输入任何内容,只需在文件保存后退出即可。它是在同一个浏览器/jupyter 实例中完成的。
机器操作系统:Ubuntu 18.04
我可以通过单击“内核”下拉菜单并选择“中断”来解决它。
打开开发人员设置并单击控制台并键入以下内容
JSON.parse(document.getElementById('jupyter-config-data').textContent).token
然后尝试保存笔记本。之前未保存的笔记本现在将保存。
这是最简单的方法。
我不需要打开新笔记本。相反,我重新打开了树,并重新连接了内核。在某些时候,我还重新启动了内核。 – user650654 2019 年 10 月 9 日 0:17
使用 Jupyter Lab 时,投票最多的答案似乎不起作用。然而,这个确实如此。只需将 url 复制到新选项卡中,将“lab”替换为“tree”,然后按 Enter 键加载页面。它将为您的会话生成一个新的 csrf 令牌,您就可以开始了!
我建议默认启用“设置”>“自动保存文档”,以避免担心将来会丢失工作。它会定期保存,因此在任何超时发生之前一切都应该是最新的。
我不需要打开新笔记本。相反,我重新打开了树,并重新连接了内核。在某些时候,我还重新启动了内核。 – user650654 2019 年 10 月 9 日 0:17
在我的情况下,我有一个关闭的主页选项卡。重新打开 Jupyter 后,错误自动消失,我们可以保存文件。
对于在 AWS Sagemaker 上使用 jupyterlab 的任何人 - 复制选项卡足以解决问题。
其余的答案对我不起作用。我转到 localhost:8888
并单击运行,然后从那里关闭笔记本。然后我换回原来的笔记本并点击“不要重启”。之后保存笔记本并重新启动它。
刷新浏览器的标签后,错误就消失了。