4

需要什么

我有一个 HTML/CSS 文档,我想将它加载到另一个 Web 应用程序上并进行修改。

选择使用 iframe,以免样式父级泄漏到要编辑的文档中。

了什么

原始文档保存在 S3 上。S3 已正确配置为支持 CORS。

当图像或视频标签放置有 crossorigin="anonymous" 属性时。发送正确的原始标头,S3 在响应标头中设置 Access-Control-Allow-Origin。

问题

从同一个 S3 存储桶在 iframe 中加载 html 文档时。由于未设置 CORS 的原始标头,因此我没有在响应标头中获得 Access-Control-Allow-Origin。

因此,如果 S3 在请求中没有收到正确的源头,则不会发送 Access-Control-Allow-Origin。

尝试过的解决方案

我对仅适用于现代浏览器的解决方案感到满意。并因此研究了 HTML5 iframe 属性沙盒和无缝。但在这种情况下,它们似乎都没有帮助。

我还尝试通过 xhr2 加载内容,内容类型设置为文档并设置正确的原始标题。并将其添加到页面上的 iframe。问题是文档头部的 css 没有被加载。

有没有其他解决方案?我期待一个可以在 iframe 上设置的属性,但在 w3c 规范中没有这样的属性。

4

1 回答 1

2

我认为解决方案是您已经尝试过的解决方案:

通过 AJAX 加载 HTML,使用以下命令将其添加到 iframe:

document.open() / document.write() / document.close()

然后将所有相对链接重写为绝对链接

/css/style.css -> <origina-domain>/css/style.css

您需要对所有 CSS、JS、图像等执行此操作。

于 2013-08-30T18:20:52.450 回答