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

我已经在jupyter笔记本上运行了大约26个小时的脚本;我没有真正使用我的电脑做任何其他事情,但它需要运行这个程序,需要大约30个小时才能完成。大约21小时后,它停止保存,我的终端出现了这样的情况:

403 PUT /api/contents/[file.ipynb] (::1): '_xsrf' argument missing from POST

(文件的地方。Ipynb]是我的jupyter笔记本的位置。它还说:

'_xsrf' argument missing from post

在笔记本的右上角。程序仍在运行,我不想重新启动jupyter notebook,不得不再次运行程序,因为我有一个截止日期,还有什么我可以做的吗?

我使用谷歌chrome,但我没有LastPass扩展或任何'%'字符在我的代码,作为另一个帖子建议。

谢谢你的帮助!

270241 次浏览

我每天使用jupyter笔记本,以前从未遇到过这个问题…直到今天。我把笔记本打开了一整天,但它没有运行任何东西,然后莫名其妙地停止了自动保存,右上角出现了'_xsrf' argument missing from POST错误消息。供你参考——这是一个python3笔记本。

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

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

jupyter notebook list

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

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

我发现最简单的方法是:

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

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

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

当我点击“保存”按钮时,它有这个错误。根据这篇文章和其他网站的答案,我找到了解决方案。 我的jupyter笔记本电脑是从pip安装的。所以我通过在windows命令行中输入“jupyter notebook”来访问它

(1)打开一个新的命令窗口,然后打开一个新的jupyter笔记本。 尝试在旧笔记本中再次保存,这一次,错误是'fail: forbidden'

(2)然后在旧笔记本上,点击“下载为”,它会弹出一个新的窗口问你的令牌。

enter image description here

(3)打开另一个命令窗口,然后打开另一个jupyter笔记本,键入'jupyter笔记本列表' 将'token='之后和::之前的代码复制到刚才看到的方框中。你可以节省这段时间。如果失败,您可以尝试列表

中的另一个令牌

我在nvidia docker中使用图像时遇到了同样的问题(不可能保存笔记本和.py模块)。解决方案是在jupyter中打开一个终端,不需要输入任何东西,只需要在文件保存后退出。它是在相同的browser/jupyter实例中完成的。

机器操作系统:Ubuntu 18.04

1解决这个问题的方法是:

  1. 下载你无法保存的笔记本:File -> Download as -> notebook (ipynb)

  2. 在jupyter浏览器界面上点击下载文件打开下载的笔记本

现在,您应该能够从jupyter UI保存(或重命名)这个笔记本

我想到的解决办法似乎太简单了,但很有效。进入/tree即Jupyter主页并刷新浏览器。工作。

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

JSON.parse (. getelementbyid (jupyter-config-data) .textContent) .token

那就试着保存笔记本吧。以前不存的笔记本现在可以存了。

在我的情况下,这个问题是通过点击“内核”(显示在笔记本电脑顶部),然后“重新连接”解决的。

注:在一些版本的Jupyter,没有“重新连接”。

这是最简单的方法。

我不需要打开一个新的笔记本。相反,我重新打开树,并重新连接内核。在某个时刻,我还重新启动了内核。- user650654 10月9日'19 at 0:17

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

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

我建议启用设置>默认情况下自动保存文档,以避免担心将来丢失工作。它会定期保存,所以在任何超时发生之前,所有内容都应该是最新的。

我不需要打开一个新的笔记本。相反,我重新打开树,并重新连接内核。在某个时刻,我还重新启动了内核。- user650654 10月9日'19 at 0:17

对我来说唯一有效的解决方法是:

  1. 我在chrome浏览器中打开了一个新标签
  2. 我粘贴:http://localhost:8888/?token=......
  3. 然后我打开原来的笔记本,把它保存了下来

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

我也遇到了同样的错误。我刚刚打开另一个不运行的朱庇特笔记本电脑,一个错误自动消失了。

对于任何在AWS Sagemaker上使用jupyterlab的人来说,复制标签就足以解决这个问题。

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

我只需要刷新树选项卡就可以了。

在刷新浏览器的选项卡后,错误就消失了。

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

jupyter lab --ServerApp.disable_check_xsrf=True

这可能意味着您的服务器没有经过令牌验证。例如,您可能已经启动了JupyterLab:

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

这也可能意味着您在本地机器上运行JupyterLab,而您的服务器无法远程访问,所以这没有问题。

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

对我来说有用的只是改变内核。< br > 要更改内核,只需到笔记本的首页栏,选择Kernel,然后选择Change kernel,然后从你拥有的内核中选择另一个内核(显然,你需要至少有两个预设内核)。 修改后,消息'_xsrf' argument missing from post消失,笔记本可以再次保存