为啥我的 iFrame HTML 文件没有内联显示?相反,正在下载 HTML 文件

Posted

技术标签:

【中文标题】为啥我的 iFrame HTML 文件没有内联显示?相反,正在下载 HTML 文件【英文标题】:Why is my iFrame HTML file not being shown inline? Instead, the HTML file is being downloaded为什么我的 iFrame HTML 文件没有内联显示?相反,正在下载 HTML 文件 【发布时间】:2015-03-01 02:20:59 【问题描述】:

直到几周前,我链接到 iFrame 的任何 html 文件都会显示在框架内。突然之间,Chrome 和 Firefox 现在会询问我是否要下载 iFrame 中的 HTML 文件。这是一个 Apache 服务器,我相信它最近升级了。它是如何升级的,我不确定。我想知道它是否与某些 MIME 类型在 iFrame 中的处理方式有关。

注意:Chrome 和 Firefox 是我测试过的唯一浏览器。不过,我认为这不是浏览器问题。

【问题讨论】:

所以基本上没有任何变化,除了整个服务器都被修改了......这将有助于缩小范围。 你能告诉我们发生这种情况的地方吗?或者用代码示例详细说明一下? 如果您在普通选项卡的地址栏中打开 iframe url 会发生什么?另外,您可以查看浏览器的开发者工具(网络选项卡)以查看 iframe 响应的 Content-Type 标头吗? 尝试从服务器移除内容处置头响应 这里的第二个答案***.com/questions/12144554/… 可能有用,听起来情况类似。 【参考方案1】:

很可能您的 Apache 服务器上不再正确设置 mime 类型配置。大多数情况下,服务器配置会根据您请求的文件扩展名设置返回对象的 mime 类型。如果您的文件扩展名已更改,或者您使用的动态 URL 不以“.docx”结尾),例如由介入的应用程序服务器处理以返回文件而无需自己设置 MIME 类型,那么浏览器无法知道内容是什么,并正确得出结论,最好的办法就是只为您提供内容文件。

所以... 将您正在下载的文件的扩展名设置为 .docx 或 .doc。如果您使用的是默认的 Apache 配置,则可能会这样做。如果这不起作用,请根据 apache.conf 或其他 apache 配置文件中的 URL 过滤器配置更改返回对象的 mime 类型。或者,如果使用动态 URL,请将代码中的 mime 类型显式设置为以下之一:

.doc - application/msword
.dot - application/msword
.docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx - application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docm - application/vnd.ms-word.document.macroEnabled.12
.dotm - application/vnd.ms-word.template.macroEnabled.12 

【讨论】:

以上是关于为啥我的 iFrame HTML 文件没有内联显示?相反,正在下载 HTML 文件的主要内容,如果未能解决你的问题,请参考以下文章

Jssor、iFrame、内联 CSS 和 Firefox

iframe内联元素展示PDF,不显示控件(禁止下载)

iframe 内联框架

为啥我的 iframe 将 html 内容视为文本

<iframe> 使用包含在文件中的内联脚本去除边框

为啥 iframe 请求不发送 cookie?