我有一个包含 iframe 的网页,在 iframe 中有一个 object,该 object 具有svg文件的 src= 属性,当我从localhost提供页面时,该svg文件可以正确显示(在Windows 10上运行apache 2. 4)但是当我从一个同样运行apache 2. 4的Amazon Linux示例提供相同的页面时,对象的svg文件被呈现为文本。我非常确定页面是相同的,因为 htdocs 树的内容由git管理,我在Windows 10 PC上进行更改并提交,然后将它们推送到Amazon Linux机器上。
我附上了两个截图,是我在Chrome开发工具中看到的两个系统上的同一个页面。正如你所看到的,在PC上,〈object〉扩展为一个 #document,后面跟着〈svg〉。但在Linux上,〈object〉扩展为一个 #document,后面跟着〈html〉。svg文件的源代码被 Package 在〈body〉中的〈pre〉标记中。这怎么可能呢??我使用的是同一个Chrome鲍泽示例,唯一的区别是哪个服务器在为页面提供服务。
1条答案
按热度按时间kzipqqlq1#
我给Danny '365CSI' Engelman提供了一个机会,让他把他的评论作为答案发表,但他没有接受,所以我将自己发表答案。(我使用的是xampp,它打包了自己的etc目录)。旧版本的
mime.types
没有.svg
文件的条目。 www.example.com ,然后重新启动服务器,解决了问题。我发现这非常令人惊讶,因为我的
<object>
元素有一个type=image/svg+xml
属性,这与更新后的mime.types
文件中给定的类型相同。令人惊讶的是,服务器上的file
命令将该文件识别为具有该mime类型。因此,在mime.types
文件中缺少.svg
条目实际上导致apache忽略object元素上的type属性,并将对象的内容呈现为文本!