我正在尝试将仪表板嵌入到另一个站点的 iframe 中。这两个站点都仅使用 HTTP。这是超集文件中的配置
PUBLIC_ROLE_LIKE_GAMMA: True
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_SAMESITE = 'LAX'
SESSION_COOKIE_HTTPONLY = True
PUBLIC_ROLE_LIKE: 'Gamma'
HTTP_HEADERS = {'X-Frame-Options': 'ALLOWALL'}
后端代码如下:
myobj = {
"user": {
"username": "username",
"first_name": "*****",
"last_name": "*****"
},
"resources": [{
"type": "dashboard",
"id": "1"
}],
"rls": []
}
login = requests.post(login_url, json={"password": "Password$","provider": "db","refresh": True, "username": "username"})
login_response = json.loads(login.text)
headers = {'Authorization': f"Bearer {login_response['access_token']}"}
csrf = requests.get(csrf_url, headers = headers)
csrf_token = json.loads(csrf.text)['result']
headers_csrf = {
'accept': 'application/json',
'Authorization': f"Bearer {login_response['access_token']}",
'Referer': csrf_url,
'X-CSRFToken': csrf_token,
}
print(headers_csrf)
guest_token = requests.post(guest_token_url, json = myobj, headers = headers_csrf)
guest_token = json.loads(guest_token.text)['token']
print(guest_token)
final_url = f"http://superset.hookit.korenet.local?token={guest_token}&next=/superset/dashboard/p/jWQx9XBR4Bw/?standalone=true"
后端代码生成以下 URL,该 URL 插入到另一个站点的 iFrame 中:
http://superset.domain.local?token=*************************.eyJ1c2VyIjp7Imxhc3RfbmFtZSI6IkthbnNhcmEiLCJ1c2VybmFtZSI6InRrYW5zYXJhIiwiZmlyc3RfbmFtZS****************************************Ym9hcmQiLCJpZCI6IjEifV0sInJsc19ydWxlcyI6W10sImlhdCI6MTcwNDY2MDYzNS42ODgwMDYyLCJleHAiOjE3MDQ2NjA5MzUuNjg4MDA2MiwiYXVkIjoiaHR0cDovLzAuMC4wLjA6ODA4MC8iLCJ0eXBlIjoiZ3Vlc3QifQ.t2SZsWg66njR1He20cAcMA9mhkafuCZBqrX58jabqbo&next=/superset/dashboard/p/jWQx9XBR4Bw/?standalone=true
问题是 iFrame 始终只显示登录页面。我在隐身窗口中尝试了 URL,这也显示了登录页面。 对我做错了什么有什么想法吗?我们希望以访客用户身份查看仪表板,因为外部用户需要查看其他站点中的仪表板。
感谢您的帮助。 问候
该功能仅在使用 supersetEmbeddedSdk.embedDashboard 函数嵌入仪表板时才起作用。