docker Jupyter:XSRF cookie与POST不匹配

bpzcxfmw  于 2022-12-03  发布在  Docker
关注(0)|答案(2)|浏览(636)

我正在尝试使用Jupyter rest API,使用在本地Anaconda上运行的python程序将文件传输到Docker容器中的本地Jupyter。
在对如何输入令牌进行了一些摸索之后,我已经成功地执行了requests.get()。
现在,我想执行requests.post()命令来传输文件。
配置方式:

  • 在Windows的Docker工具箱上运行的本地Docker容器
  • Docker版本17.04.0-ce,内部版本号4845 c56
  • tensorflow/tensorflow包括Jupyter最新版本安装
  • jupyter内核网关==0.3.1
  • 在Windows 10计算机上运行的本地Anaconda v. 4.3.14

编码:

token = token_code_provided_by_jupyter_at_startup
api_url = "http://192.168.99.100:8888/api/contents"
# getting the file's data from disk and converting into a json file
cwd = os.getcwd()
file_location = cwd+r'\Resources\Test\test_post.py'
payload = open(file_location, 'r').read()
b64payload = base64.encodestring(payload)
body = json.dumps({
            'content':b64payload,
            'name': 'test_post.py',
            'path': '/api/contents/',
            'format': 'base64',
            'type':'file'
        })
# getting the xsrf cookie
client = requests.session()
client.get('http://192.168.99.100:8888/')
csrftoken = client.cookies['_xsrf']
headers ={'Content-type': 'application/json', 'X-CSRFToken':csrftoken, 'Referer':'http://192.168.99.100:8888/api/contents', 'token':token}
response = requests.post(api_url, data=body, headers=headers, verify=True)

返回错误
[W 12:22:36.710笔记本应用程序] 403 POST /API/内容(192.168.99.1):XSRF cookie与POST参数不匹配[W 12:22:36.713 NotebookApp] 403 POST /api/内容(192.168.99.1)4.17毫秒引用= http://192.168.99.100:8888/api/contents

yduiuuwa

yduiuuwa1#

我的解决方案灵感来自于@SaintNazaire,在Chrome浏览器中,我打开cookie文件夹,发现Cookie中有重复的_xsrf项,我将其全部删除并刷新Jupyter,然后一切顺利。x1c 0d1x

agxfikkp

agxfikkp2#

实际上,在使用头令牌进行身份验证时,不需要xsrf cookie。

headers = {'Authorization': 'token ' + token}

请参考Jupyter笔记本文档。
http://jupyter-notebook.readthedocs.io/en/latest/security.html

相关问题