问题场景,iframe 通过src 加载三方website,同时三方website 调用api 生成 web 页面,页面中会包含click 链接(打开新页面)之后会包含文件下载
参考图如下
问题
对于通过api 生成的web page ,click 打开是另外一个web page (那怕是新打开浏览器都阻止下载
解决方法
通过发现是因为iframe 开启了sandbox,如果需要支持需要在iframe 的sandbox 中配置allow download 支持,参考
<iframe sandbox="allow-scripts allow-same-origin allow-popups allow-forms allow-downloads" src='xxxxxx'></iframe>
参考sandbox 继承关系
说明
iframe 的sandbox 是一个很不错的安全能力,但是配置少了,或者配置的不合理造成的问题也是不少的,做好完整测试很重要
参考资料
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
https://web.dev/sandboxed-iframes/