如何获取Amazon SageMaker Studio中Jupyter Notebook的CSRF令牌?
解决Amazon SageMaker Studio请求403错误的方案
问题原因
SageMaker Studio的Jupyter Lab接口依赖CSRF令牌和会话Cookie做身份验证,直接调用requests.get未携带这些验证信息,因此返回403权限错误。
完整解决步骤
1. 提取当前会话的Cookie与CSRF令牌
在test.ipynb中运行以下代码,获取当前会话的验证凭证:
from notebook.notebookapp import list_running_servers import requests # 获取当前运行的Jupyter服务器实例信息 server_info = next(list_running_servers()) # 调用Jupyter API获取CSRF令牌 csrf_api_url = f"{server_info['url']}api/settings" # 自动携带当前会话Cookie发起请求 resp = requests.get(csrf_api_url, cookies=server_info['cookies']) csrf_token = resp.json()['csrf_token']
2. 携带验证信息发起目标请求
修改原请求代码,同时传入Cookie和CSRF请求头:
target_url = "https://<id>.studio.<region>.sagemaker.aws/jupyter/default/lab/tree/test.ipynb" # 设置CSRF请求头 request_headers = {'X-XSRFToken': csrf_token} # 携带Cookie和头信息发起请求 response = requests.get(target_url, cookies=server_info['cookies'], headers=request_headers)
额外提示
- 必须在同一个SageMaker Studio会话内执行代码,Cookie和CSRF令牌与当前会话绑定,跨会话会失效。
- 如果只是要读取test.ipynb的内容,直接用本地文件操作更高效:
with open('test.ipynb', 'r') as f: content = f.read()。
内容的提问来源于stack exchange,提问作者Meghana S
相关产品推荐
相关产品推荐

