ChatGPT解决这个技术问题 Extra ChatGPT

Jupyter Notebook 未保存:帖子中缺少“_xsrf”参数

我已经在 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 扩展名或任何 '%' 字符,正如另一篇文章所建议的那样。

谢谢你的帮助!

如果您进行搜索,则在线上有关于此主题的讨论。我看到的一个建议是在新的浏览器窗口中打开同一个笔记本,这可以解决问题。然后您可以关闭该新窗口并继续在前一个窗口中工作。
感谢@AlexK,这解决了我的 MBP 上的相同问题。
只是提示,在这种情况下,使用 %store 魔法存储您的重要变量。这样,即使您的笔记本已关闭且未保存,您的变量仍然存在,因此您可以再次显示它们。
@AlexK 那代码呢?如果我在新窗口中打开,是否会保留对代码的任何更改?
更新我之前的评论:@AlexK 的建议有效,之后您可以保存原始笔记本和所做的任何代码更改。谢谢。

m
mirekphd

我发现的最简单的方法是:

https://github.com/nteract/hydrogen/issues/922#issuecomment-405456346

只需在同一个内核上打开另一个(非运行的、现有的)笔记本,问题就神奇地消失了;您可以再次保存之前显示 _xsrf 错误的笔记本。

如果您已经关闭了 Jupyter 主页,则可以在启动 Jupyter 的终端上找到指向它的链接。


这拯救了我的一天。如果我没有遇到这个解决方案,我将失去 4 天的工作量。谢谢!
我不需要打开新笔记本。相反,我重新打开了 tree,并重新连接了内核。在某些时候,我还重新启动了内核。
在我刷新笔记本列表之前,我什至不被允许打开一个新笔记本。之后我打开一个新笔记本,错误消失了..😄
请注意,该解决方法需要之前创建笔记本,因此打开另一个现有的非运行笔记本,不要创建新笔记本或打开正在运行的笔记本,这两者都会引发相同的错误。
这就是我喜欢stackoverflow的原因
G
GDB

我遇到的解决方案似乎太简单了,但确实有效。转到 /tree aka Jupyter 主页并刷新浏览器。工作。


这对我有用,而在我的情况下打开另一个笔记本的解决方案失败了。
谢天谢地,我可以看到我投了哪些帖子,所以当我忘记并在一年后回来时,我知道使用哪种解决方案。
接受的答案对我不起作用,但确实如此(尽管我正在使用 Jupyter Lab 以防万一)。我不敢刷新我的 Jupyter Lab(在 mydomain.sth/lab 上运行?),因为它可能丢失了我的更改,所以我按照这里的建议打开了 mydomain.sth/tree,刷新并且它工作了。谢谢!
接受的答案对我不起作用,但确实如此。我没有使用 Jupyter Lab,而是使用带有基于 conda 内核的 Jupyter Notebook。
s
salconte

唯一对我有用的解决方案是:

我在粘贴的 chrome 中打开了一个新标签:http://localhost:8888/?token=...... 然后我去了我原来的笔记本,我能够保存它


这对我有用,其他人都没有。
也为我工作(其他人也没有),没有令牌的 localhost:8888 对我来说就足够了:)
这对我也有用。我做了右键单击,重复选项卡。关闭了重复选项卡并能够保存在工作选项卡上。
B
Biggsy

我每天都使用 jupyter 笔记本,之前从未遇到过这个问题......直到今天。我整天打开笔记本,但它没有运行任何东西,然后无缘无故地停止自动保存,右上角出现 '_xsrf' argument missing from POST 错误消息。仅供参考 - 这是一个 python3 笔记本。

我不知道这个问题的原因,但我最近将我的 python3 版本升级到 3.7.2 并将我的所有站点包升级到几天前的最新版本,这可能是原因。

至于解决方案,正如@AlexK 评论中所建议的那样,我在新窗口中打开了同一个笔记本(实际上是不同的浏览器),使用

jupyter notebook list

在终端中获取带有登录令牌的 URL。

这导致我的笔记本再次打开并可以保存,但我上次成功自动保存后输入的信息丢失了。值得庆幸的是,我损坏的实例仍然打开并且除了保存之外还可以工作,所以我可以简单地复制并粘贴信息然后点击保存。因此,如果您尝试此操作,请保持损坏的实例处于打开状态!


打开第二个选项卡后,您应该可以返回第一个选项卡并保存,因此您甚至不必复制和粘贴到新选项卡。至少,这对我来说是这样的。
t
thomaskeefe

只需刷新树选项卡对我有用。


m
music_piano

当我单击“保存”按钮时,出现此错误。根据这篇文章和其他网站的答案,我刚刚找到了解决方案。我的 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 笔记本中的“禁止”错误将消失。
S
Sweta Shrestha

我也遇到了同样的错误。我刚刚打开了另一个未运行的 Juputer 笔记本,错误自动消失了。


T
Toru Kikuchi

就我而言,通过单击“内核”(显示在笔记本顶部)然后单击“重新连接”来解决此问题。

补充说明:在某些版本的 Jupyter 中,没有“重新连接”。


这对我不起作用。它重新连接了内核,但 '_xsrf' argument missing... 错误仍然存在。
S
Saurabh Verma

解决此问题的一种解决方法是:

下载无法保存的笔记本,方法是:文件 --> 下载为 --> 笔记本 (ipynb)。通过单击 jupyter 浏览器 UI 上的下载文件打开下载的笔记本

现在,您应该可以从 jupyter UI 中保存(或重命名)这个笔记本了


打开另一个笔记本并没有解决我的问题,但这确实解决了(即下载nb)
D
David Brochart

您可以通过启动 JupyterLab 来禁用 XSRF 检查:

jupyter lab --ServerApp.disable_check_xsrf=True

这可能意味着您的服务器未经过令牌身份验证。例如,您可能已经使用以下命令启动了 JupyterLab:

jupyter lab --NotebookApp.token='' --NotebookApp.password=''

这也可能意味着您在本地计算机上运行 JupyterLab,并且无法远程访问您的服务器,所以这很好。

但一般要注意,如果您的服务器没有身份验证,那么它很容易受到 XSRF 的攻击。


b
brz

使用 nvidia docker 中的图像,我遇到了同样的问题(无法保存笔记本和 .py 模块)。解决方案只是在 jupyter 中打开一个终端,无需输入任何内容,只需在文件保存后退出即可。它是在同一个浏览器/jupyter 实例中完成的。

机器操作系统:Ubuntu 18.04


u
user14063657

我可以通过单击“内核”下拉菜单并选择“中断”来解决它。


A
Aakash Avinesh kumar

打开开发人员设置并单击控制台并键入以下内容

JSON.parse(document.getElementById('jupyter-config-data').textContent).token

然后尝试保存笔记本。之前未保存的笔记本现在将保存。


l
liangli

这是最简单的方法。

我不需要打开新笔记本。相反,我重新打开了树,并重新连接了内核。在某些时候,我还重新启动了内核。 – user650654 2019 年 10 月 9 日 0:17


E
EdemaRuh

使用 Jupyter Lab 时,投票最多的答案似乎不起作用。然而,这个确实如此。只需将 url 复制到新选项卡中,将“lab”替换为“tree”,然后按 Enter 键加载页面。它将为您的会话生成一个新的 csrf 令牌,您就可以开始了!

我建议默认启用“设置”>“自动保存文档”,以避免担心将来会丢失工作。它会定期保存,因此在任何超时发生之前一切都应该是最新的。

我不需要打开新笔记本。相反,我重新打开了树,并重新连接了内核。在某些时候,我还重新启动了内核。 – user650654 2019 年 10 月 9 日 0:17


D
Dharman

在我的情况下,我有一个关闭的主页选项卡。重新打开 Jupyter 后,错误自动消失,我们可以保存文件。


I
Idodo

对于在 AWS Sagemaker 上使用 jupyterlab 的任何人 - 复制选项卡足以解决问题。


B
Big Dumb

其余的答案对我不起作用。我转到 localhost:8888 并单击运行,然后从那里关闭笔记本。然后我换回原来的笔记本并点击“不要重启”。之后保存笔记本并重新启动它。


A
AnksG

刷新浏览器的标签后,错误就消失了。


这有点冒险,因为您可能会丢失您的工作。我至少会先 File > Download as > ipynb 或 File > Make a Copy。