SVG图像未显示在某些Web服务器上

时间:2011-07-25 14:21:00

标签: svg apache

我在某些服务器上的html文件中显示.svg图像时遇到问题。这让我感到困惑,因为我认为浏览器决定是否渲染svg图像,但浏览器保持不变。我正在使用以下字符串来显示它们:

<img src='path/to/image.svg' alt='image' /> 

在一台RHEL6服务器上,它显示在另一台RHEL5服务器上,它不会。 httpd的版本分别为2.2.15-9.el6和2.2.3-53.el5。网络浏览器与Google Chrome 12.0.742.122保持一致。服务器之间是否有某种东西可以决定svg图像是否被渲染?

错误日志不报告任何内容,访问日志为.svg文件提供200和304的状态。

3 个答案:

答案 0 :(得分:9)

SVG图像应该以MIME类型image / svg + xml提供,所以我建议先检查一下。检查所提供的MIME类型的一种方法是使用wget来获取图像。这是wget输出的一个例子。请注意它显示MIME类型的位置:

jacob@jacob-laptop:~/tmp$ wget http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg
--2011-07-25 11:32:04--  http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg
Resolving croczilla.com... 77.92.68.237
Connecting to croczilla.com|77.92.68.237|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31187 (30K) [image/svg+xml]
Saving to: `butterfly.svg'

100%[====================================================================>] 31,187      84.5K/s   in 0.4s    

如果在两种情况下MIME类型都是image / svg + xml,那么我会对两个文档的内容进行区分,看看它们之间是否存在差异。

此外,虽然这不能回答您的问题,但您还应该知道并非所有浏览器都支持使用HTML img标记来呈现SVG。这样做的原因是,通常,img标签使用的安全性低于object或embed标签。您可以在此处阅读有关此内容的更多信息:Reliably detecting <img> tag support for SVG

答案 1 :(得分:2)

jbeard4答案是对的,但我想补充一下:为了解决这个问题,你必须让你的服务器以image/svg+xml的形式提供SVG图像。在Apache上,您可以通过将这两行添加到.htaccess

来实现
AddType image/svg+xml svg svgz
AddEncoding gzip svgz

通过http://kaioa.com/node/45

答案 2 :(得分:0)

插入apache选项

`<filesMatch "\.(svg|svgz)$">
    FileETag None
    <ifModule mod_headers.c>
        Header set Content-type "image/svg+xml"
    </ifModule>
</filesMatch>`

前一行<Directory "/LocalServer/cgi-bin">