fastapi-amis-admin icon indicating copy to clipboard operation
fastapi-amis-admin copied to clipboard

iframe无法指定外部src

Open Chaoyingz opened this issue 1 year ago • 5 comments

当iframe的src指定为不以site_url开头的外部地址时候,这个iframe page就无法加载。

查看源码后感觉这个判断有问题 https://github.com/amisadmin/fastapi_amis_admin/blob/7e5d603a40755f772275d857e9b26276bd332029/fastapi_amis_admin/admin/admin.py#L647-L650

应该改成这样:

if self.site.settings.site_url and iframe.src.startswith(self.site.settings.site_url):
    self.page_schema.url = re.sub(r"^https?://", "", iframe.src)
else:
    self.page_schema.url = iframe.src

Chaoyingz avatar Sep 19 '22 09:09 Chaoyingz

您好, 欢迎本地测试后提交pr,最近比较忙可能测试不过来.

amisadmin avatar Sep 21 '22 13:09 amisadmin

这个判断的具体目的是什么呢

Chaoyingz avatar Sep 22 '22 02:09 Chaoyingz

保证左侧的菜单栏iframe页面, 直接点击能够在当前页面打开, 并且右键能够以新标签页的形式打开.

amisadmin avatar Sep 22 '22 02:09 amisadmin

我目前没遇这个场景。如果设置src为https://example.com/,那么按照当前的逻辑实际渲染出来iframe的src就成了//example.com/,页面无法正常加载。

Chaoyingz avatar Sep 22 '22 02:09 Chaoyingz

@site.register_admin
class AmisEditorAdmin(admin.IframeAdmin):
    group_schema = None
    page_schema = amis.PageSchema(label='AmisEditorDemo', icon='fa fa-edit', sort=-100)
    src = 'https://aisuda.github.io/amis-editor-demo/'

fastapi_user_auth_demo 示例程序中以上代码显示正常, 确保目标链接支持iframe

amisadmin avatar Sep 23 '22 14:09 amisadmin

我测试了下如果src带端口号的话那么这页就不会在侧边栏菜单出现

Chaoyingz avatar Sep 27 '22 01:09 Chaoyingz

我测试了下如果src带端口号的话那么这页就不会在侧边栏菜单出现

这个很大可能性是amis的限制, 他的路由路径不能包含某些特殊字符.

amisadmin avatar Sep 27 '22 01:09 amisadmin

我测试了下如果src带端口号的话那么这页就不会在侧边栏菜单出现

是否全部src都需要执行这个正则替换

self.page_schema.url = re.sub(r"^https?:", "", iframe.src)

amisadmin avatar Sep 27 '22 01:09 amisadmin

如果我把这个判断去掉的话tab就会正常出现

Chaoyingz avatar Sep 27 '22 01:09 Chaoyingz